无法从CIImage获取图像数据

3

我正在使用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);

在控制台输出图像数据时,我得到了null值。请检查上面的代码,并让我知道哪里错了。


在这行代码中,effect的值是多少? CIFilter *filter = [CIFilter filterWithName:effect keysAndValues:kCIInputImageKey, beginImage, nil]; - jignesh Vadadoriya
2个回答

2
你的问题在于你传递了一个CIImage
UIImage *filteredImage = [UIImage imageWithCIImage:outputImage];

但是在创建UIImage时,您需要传递CGImageRef,请按照以下方式编写:

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

我希望这能对你有所帮助


你很受欢迎。 - jignesh Vadadoriya

1

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

 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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接