Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
iOS 8中GPUImage崩溃_Ios_Gpuimage - Fatal编程技术网

iOS 8中GPUImage崩溃

iOS 8中GPUImage崩溃,ios,gpuimage,Ios,Gpuimage,我实现了一个过滤器工具机制,它有许多过滤器。每个过滤器包含2-3个不同的过滤器,即我使用GPUImageFilterGroup进行此操作。现在,当我更新兼容iOS 8的GPU映像库时,它显示“未找到实例方法PrepareFormageCapture”,并且应用程序崩溃 我还尝试实现以下代码 GPUImageFilterGroup *filter = [[GPUImageFilterGroup alloc] init]; GPUImageRGBFilter *stillImageFil

我实现了一个过滤器工具机制,它有许多过滤器。每个过滤器包含2-3个不同的过滤器,即我使用GPUImageFilterGroup进行此操作。现在,当我更新兼容iOS 8的GPU映像库时,它显示“未找到实例方法PrepareFormageCapture”,并且应用程序崩溃

我还尝试实现以下代码

GPUImageFilterGroup *filter = [[GPUImageFilterGroup alloc] init];

    GPUImageRGBFilter *stillImageFilter1 = [[GPUImageRGBFilter alloc] init];
//    [stillImageFilter1 prepareForImageCapture];

    stillImageFilter1.red = 0.2;
    stillImageFilter1.green = 0.8;
        [stillImageFilter1 useNextFrameForImageCapture];
    [(GPUImageFilterGroup *)filter addFilter:stillImageFilter1];

    GPUImageVignetteFilter *stillImageFilter2 = [[GPUImageVignetteFilter alloc] init];
//    [stillImageFilter1 prepareForImageCapture];
    stillImageFilter2.vignetteStart = 0.32;
    [stillImageFilter1 useNextFrameForImageCapture];
    [(GPUImageFilterGroup *)filter addFilter:stillImageFilter2];

    [stillImageFilter1 addTarget:stillImageFilter2];

    [(GPUImageFilterGroup *)filter setInitialFilters:[NSArray arrayWithObject:stillImageFilter1]];
    [(GPUImageFilterGroup *)filter setTerminalFilter:stillImageFilter2];

    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:image];
    [stillImageSource addTarget:(GPUImageFilterGroup *)filter];
    [stillImageSource processImage];

    UIImage *img = [(GPUImageFilterGroup *)filter imageFromCurrentFramebuffer];
它返回零图像。谁能告诉我正确的方法是什么


提前感谢。

首先,iOS 8没有崩溃。您已经有一段时间没有更新GPUImage的副本了,并且该方法在几个月前的一次更新中被删除,该更新与任何iOS兼容性无关。原因已经解释,我将再次引用相关段落:

不过,这确实给界面增加了一点瑕疵,我已经 更改了一些方法名称,以向更新其名称的任何人说明这一点 代码。因为帧缓冲区现在是暂时的,如果您想捕获 如果是其中一个的图像,则必须在处理之前对其进行标记。你 通过在过滤器上使用-useNextFrameForImageCapture方法执行此操作 指示下一次图像通过过滤器时 chain,你会想保留帧缓冲区一段时间 再长一点就可以从中获取图像了-imageByFilteringImage: 现在自动为您执行此操作,我添加了另一个 ProcessImageUptFilter:withCompletionHandler中的便利方法: 以异步方式执行此操作

如您所见,-prepareForImageCapture已被删除,因为它在新的缓存系统中没有用处

更新后的代码返回nil的原因是您在错误的筛选器上调用了-useNextFrameForImageCapture。它需要在组中的终端筛选器(stillImageFilter2)上调用,并且只需要在调用-processImage之前调用一次。这意味着这个特定的帧缓冲区需要挂起足够长的时间才能从中捕获图像


老实说,您不需要上面提到的GPUImageFilterGroup,因为它只会使过滤器链接变得复杂。

谢谢您的回答。很抱歉,我没有提前更新代码。除了使用GPUImageFilterGroup,您能告诉我如何使用过滤器链接吗。先发制人