【问题标题】:Unable to get Image Data from CIImage无法从 CIImage 获取图像数据
【发布时间】:2017-04-13 06:56:00
【问题描述】:

我正在使用CIImageCIFilter 进行图像过滤。之后,我试图通过UIImageJPEGRepresentation 获取图像数据,但我得到的是空数据。

CIImage *beginImage = [[CIImage alloc] initWithImage:sourceImage];

CIContext *context = [CIContext contextWithOptions:nil];

CIFilter *filter = [CIFilter filterWithName:effect keysAndValues:kCIInputImageKey, beginImage, nil];

CIImage *outputImage = [filter outputImage];

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];

UIImage *filteredImage = [UIImage imageWithCIImage:outputImage];
CGImageRelease(cgimg);

NSData *imageData = UIImageJPEGRepresentation(filteredImage, 1.0);

我在控制台 imageData 时得到空数据。请检查我上面的代码,让我知道我做错了什么。

【问题讨论】:

  • 效果的值是多少?在这一行 CIFilter *filter = [CIFilter filterWithName:effect keysAndValues:kCIInputImageKey, beginImage, nil];

标签: ios objective-c cifilter ciimage


【解决方案1】:

你的问题在这里你正在传递CIImage

UIImage *filteredImage = [UIImage imageWithCIImage:outputImage];

但是你需要在创建UIImage时传递CGImageRef写这个

 UIImage *filteredImage = [[UIImage alloc] initWithCGImage:cgimg];

希望对你有帮助

【讨论】:

  • 你来得正好
【解决方案2】:

// 创建我们的模糊图像试试这个希望它对你有用。

 CIContext *context = [CIContext contextWithOptions:nil];
 CIImage *inputImage = [CIImage imageWithCGImage:theImage.CGImage]; //theImage pass your image
 CIFilter *filter1 = [CIFilter filterWithName:@"CIGaussianBlur"];
 [filter1 setValue:inputImage forKey:kCIInputImageKey];
 CIImage *result = [filter1 valueForKey:kCIOutputImageKey];
 CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
 UIImage *returnImage = [UIImage imageWithCGImage:cgImage]; // returnImage is your blur image
 CGImageRelease(cgImage);

【讨论】:

    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多