Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Gpu图像照片应用程序崩溃_Iphone_Ios_Gpuimage - Fatal编程技术网

Iphone Gpu图像照片应用程序崩溃

Iphone Gpu图像照片应用程序崩溃,iphone,ios,gpuimage,Iphone,Ios,Gpuimage,我正在使用GPU图像开源框架进行图像效果。问题是,当我试图定期对图像应用过滤器时,应用程序会给我一个内存警告,然后崩溃 代码如下: sourcePicture = [[GPUImagePicture alloc] initWithImage:[self scaleAndRotateImage:sourceImage] smoothlyScaleOutput:YES]; GPUImageGaussianBlurFilter *bright=[[GPUImageGaussianBlurFilter

我正在使用GPU图像开源框架进行图像效果。问题是,当我试图定期对图像应用过滤器时,应用程序会给我一个内存警告,然后崩溃

代码如下:

sourcePicture = [[GPUImagePicture alloc] initWithImage:[self scaleAndRotateImage:sourceImage] smoothlyScaleOutput:YES];

GPUImageGaussianBlurFilter *bright=[[GPUImageGaussianBlurFilter alloc]init];
[bright setBlurSize:1.0];

GPUImageFilter *sepiaFilter = bright;
[bright release];
[sepiaFilter prepareForImageCapture];
[sepiaFilter forceProcessingAtSize:self.m_imageView.image.size]; // This is now needed to make the filter run at the smaller output size
[sourcePicture addTarget:sepiaFilter];
[sourcePicture processImage];

UIImage *sep=[sepiaFilter imageFromCurrentlyProcessedOutput];
self.m_imageView.image=sep;
[sourcePicture release];
[sepiaFilter release];

请帮我解决这个问题。谢谢

sepiaFilter
没有保持
明亮
,所以它只会是指向已释放对象的指针。您应该对其进行更改,使其保留对象

GPUImageFilter *sepiaFilter = [bright retain]; // Now retain count is increased +1
否则,这就是发生在该对象上的情况

GPUImageGaussianBlurFilter *bright = [[GPUImageGaussianBlurFilter alloc] init]; // New object with retain count 1
[bright setBlurSize:1.0];

GPUImageFilter *sepiaFilter = bright; // Still retain count 1 (not being retained)
[bright release]; // Being released. Retain count = 0.
// At this point both sephiaFilter and bright point to released memory.

[sepiaFilter prepareForImageCapture]; // This is calling messages on a released object.
[sepiaFilter forceProcessingAtSize:self.m_imageView.image.size]; // This is calling messages on a released object.
[sourcePicture addTarget:sepiaFilter]; // This is passing a released object as an argument.

请张贴事故日志。没有它,很难知道出了什么问题。这可能不是问题所在。当我将此代码用于图像处理时[sepiaFilter forceProcessingAtSize:self.m_imageView.image.size];在这里,如果我以较小的尺寸处理图像,比如说(CGSizeMake(120120)),它不会给我带来崩溃。但在保存过程中会影响图像质量。那么该怎么办呢?我在答案的注释中警告了这个确切的崩溃,他们从中复制了上面的所有代码:。唉。