gpt4 book ai didi

ios - 通过 CIFilter 传递 UIImage 会产生空白图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:29:18 26 4
gpt4 key购买 nike

我的应用程序为所选图像添加滤镜。该应用程序的工作原理如下:

  1. 从图像选择器中选择图像
  2. 图像作为我的 View Controller 的 ivar 加载
  3. 按下按钮将滤镜添加到图像

当我按下按钮添加滤镜时,主 ImageView 变成全白。但是,当我最初从选取器加载图像时,它显示正常。下面是添加过滤器的代码。

- (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];

}
}

最佳答案

问题很可能是 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];
}
}

编辑:根据评论的反馈,问题似乎是 _imageToFilter.CIImage 返回 nil。来自docs : “如果 UIImage 对象是使用 CGImageRef 初始化的,则该属性的值为 nil。”

使用 CIImage 初始化方法 initWithImage:用 UIImage 初始化一个 CIImage 对象所以它解决了这个问题。其余代码工作正常,所以我将其返回到原始 filterWithName:keysAndValues: 以专注于有问题的部分。更多关于:这里的问题:Could anyone tell me why UIImage.ciimage is null

感谢您的反馈,希望回答对 OP 有所帮助。

关于ios - 通过 CIFilter 传递 UIImage 会产生空白图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com