Car*_*izz 2 cocoa-touch objective-c ios cifilter ciimage
我的应用为所选图片添加了一个过滤器.该应用程序的工作原理如下
当我按下按钮添加过滤器时,主图像视图将变为白色.但是,当我最初从拾取器加载图像时,它显示正常.这是添加过滤器的代码.
- (IBAction)addFilter:(id)sender {
if(_imageToFilter)
{
CIImage *newImage = _imageToFilter.CIImage;
CIFilter *myFilter = [CIFilter filterWithName:@"CIColorInvert" keysAndValues:@"inputImage",newImage, nil];
CIImage *filteredImage = [myFilter outputImage];
UIImage *outputImage = [UIImage imageWithCIImage:filteredImage];
[mainImage setImage:outputImage];
}
}
Run Code Online (Sandbox Code Playgroud)
问题可能在于分配了CIImage*inputImage nil.尝试使用CIImage initWithImage:而不是_imageToFilter.CIImage(更多关于下面的编辑):
-(IBAction)addFilter:(id)sender {
if(_imageToFilter) {
CIImage *inputImage = [[CIImage alloc] initWithImage:_imageToFilter];
CIFilter *myFilter = [CIFilter filterWithName:@"CIColorInvert" keysAndValues:@"inputImage",newImage, nil];
CIImage *filteredImage = [myFilter outputImage];
UIImage *outputImage = [UIImage imageWithCIImage:filteredImage];
[mainImage setImage:outputImage];
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据评论的反馈,问题似乎是_imageToFilter.CIImage返回nil.从文档:"如果使用CGImageRef初始化UIImage对象,则属性的值为nil."
使用CIImage初始化方法initWithImage:使用UIImage初始化CIImage对象,以便解决问题.其余代码工作正常,所以我将它返回到原始filterWithName:keysAndValues:专注于有问题的部分.更多回复:这里的问题:谁能告诉我为什么UIImage.ciimage为null
感谢您的反馈,希望答案有助于OP.
| 归档时间: |
|
| 查看次数: |
2127 次 |
| 最近记录: |