【发布时间】:2012-02-24 00:41:44
【问题描述】:
我正在使用一些 CoreImage 过滤器来处理图像。将过滤器应用于我的输入图像会生成一个名为 filterOutputImage 的 CIImage 类型的输出图像。
我现在希望显示该图像,并尝试这样做:
self.modifiedPhoto = [UIImage imageWithCIImage:filterOutputImage];
self.photoImageView.image = self.modifiedPhoto;
但是视图是空白的 - 没有显示任何内容。
如果我添加日志语句来打印有关 filterOutputImage 和 self.modifiedPhoto 的详细信息,这些日志语句会向我显示这两个变量似乎都包含合法的图像数据:它们的大小正在被报告并且对象不是 nil。
所以在做了一些谷歌搜索之后,我找到了一个需要通过 CGImage 阶段的解决方案;可见:
CGImageRef outputImageRef = [context createCGImage:filterOutputImage fromRect:[filterOutputImage extent]];
self.modifiedPhoto = [UIImage imageWithCGImage:outputImageRef scale:self.originalPhoto.scale orientation:self.originalPhoto.imageOrientation];
self.photoImageView.image = self.modifiedPhoto;
CGImageRelease(outputImageRef);
第二种方法有效:我在视图中显示了正确的图像。
谁能解释一下为什么我的第一次尝试失败了?我对导致图像似乎存在但无法显示的图像的 imageWithCIImage 方法做错了什么?是否总是需要“通过”CGImage 阶段才能从 CIImage 生成 UIImage?
希望有人能解开我的困惑:)
H.
【问题讨论】:
标签: ios5 uiimage core-image