在Ray Wenderlich的网站上关注了tutorial,我决定尝试操纵我学到的知识并将其应用于CITransition,特别是CIDissolveTransition。然而,即使在交叉引用了我对苹果公司自己的过滤器文档(我认为,这些文档已经过时,难以置信地难以适应他们自己错综复杂的例子)之后,我似乎无法看到图像出现。这是我到目前为止:如何在Xcode中使用图像转换过滤器?
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];
我所得到的是一个黑色的屏幕mainImage应该显示。最终目标是能够通过使用滑块(我只假设可以工作)通过具有这种溶解效果的图像序列来循环,但是我甚至无法得到这个静态图像来显示。任何帮助将不胜感激。
哦,伙计。不能相信我错过了这一点。这只是给这个项目增加了一个很大的障碍。我假设我的下一个最佳解决方案是手动操作我的图像的像素数据。这看起来很具挑战性。谢谢您的帮助! – MyNameIsKo 2012-04-13 16:18:33
这不再是事实。文档目前声明“适用于OS X v10.4及更高版本以及iOS 6.0及更高版本。” – zot 2016-10-02 02:36:19