我尝试将混合滤镜应用于2张图像
我最近更新了GPUImage
到最后一个版本。
为简单起见,我修改了SimpleImageFilter示例
这是代码:
UIImage * image1 = [UIImage imageNamed:@"PGSImage_0000.jpg"];
UIImage * image2 = [UIImage imageNamed:@"PGSImage_0001.jpg"];
twoinputFilter = [[GPUImageColorBurnBlendFilter alloc] init];
sourcePicture1 = [[GPUImagePicture alloc] initWithImage:image1 ];
sourcePicture2 = [[GPUImagePicture alloc] initWithImage:image2 ];
[sourcePicture1 addTarget:twoinputFilter];
[sourcePicture1 processImage];
[sourcePicture2 addTarget:twoinputFilter];
[sourcePicture2 processImage];
UIImage * image = [twoinputFilter imageFromCurrentFramebuffer];
返回的图片是nil
。应用一些断点我可以看到过滤器在方法- (CGImageRef)newCGImageFromCurrentlyProcessedOutput
内失败,问题是framebufferForOutput
是nil.I' m模拟器。
我不明白为什么它不起作用。
答案 0 :(得分:4)
似乎我错过了这个命令,正如静止图像处理文档中所写的那样:
请注意,要从过滤器手动捕获图像,您需要 设置-useNextFrameForImageCapture以告诉过滤器 你以后需要从中捕获它。默认情况下,GPUImage 在过滤器中重用帧缓冲区以节省内存,因此如果您需要 您可以使用过滤器的帧缓冲来手动捕获图像 需要提前让它知道。
[twoinputFilter useNextFrameForImageCapture];