如何在Xcode中使用图像过渡滤镜?

MyN*_*sKo 1 image-processing objective-c core-image ios

在成功地遵循Ray Wenderlich网站的教程之后,我决定尝试操纵我学到的东西并将其应用于CITransition,特别是CIDissolveTransition.然而,即使在交叉引用我所学到的反对Apple自己的过滤器文档之后,我似乎也无法显示图像(我必须说,这些文档已过时并且非常难以在他们自己的复杂示例之外进行调整).这是我到目前为止:

NSURL *url = [NSURL fileURLWithPath:imagePath];
NSURL *url2 = [NSURL fileURLWithPath:image2Path];
CIContext *context;
CIFilter *filter;
CIImage *beginImage, *targetImage;
UIImageView *mainImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[self addSubview:mainImage];

beginImage = [CIImage imageWithContentsOfURL:url];
targetImage = [CIImage imageWithContentsOfURL:url2];

if(context == nil)
{
  NSLog(@"Creating Context");
  context = [CIContext contextWithOptions:nil];
}
if(filter == nil) {
  NSLog(@"Creating filter");
  filter = [CIFilter filterWithName:@"CIDissolveTransition" keysAndValues:@"inputImage",   beginImage, @"inputTargetImage", targetImage, @"inputTime", [NSNumber numberWithFloat:0.5], nil];
}

CIImage *outputImage = [filter outputImage];

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *newImg = [UIImage imageWithCGImage:cgimg];

[mainImage setImage:newImg];
Run Code Online (Sandbox Code Playgroud)

我所得到的只是一个黑屏,应该显示mainImage.最终的目标是能够使用滑块(我假设它可以工作)使用这种溶解效果循环一系列图像,但我甚至无法显示此静态图像.任何帮助将不胜感激.

小智 6

您对filterWithName:keysAndValues:的调用返回nil,因为iOS不知道如何制作CIDossolveTransition过滤器.适用于iOS的Core Image不支持Mac OS核心映像的所有过滤器.看到这个答案

你可以阅读Apple的核心图像过滤器参考,看看iOS中支持哪些过滤器,但坏消息是过渡没有为iOS 5做好准备.在iOS 5中唯一可用于处理合成的过滤器是CISourceOverCompositing,它可能是对你来说不是很有趣.