切换CIFilter后,为什么我的图片变得模糊?

时间:2014-10-13 21:29:05

标签: ios uiimageview uiimage core-image cifilter

在imageView图像上更改CIFilter后,图像显得模糊。试图找出原因。

以下是代码:

- (UIImage *)convertImageToGrayScale:(UIImage *)image {
    CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectTonal"];
    CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
    [filter setValue:inputImage forKey:kCIInputImageKey];
    return [UIImage imageWithCIImage:filter.outputImage];
}

- (UIImage *)convertImageToColorScale:(UIImage *)image {
    CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectChrome"];
    CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
    [filter setValue:inputImage forKey:kCIInputImageKey];
    return [UIImage imageWithCIImage:filter.outputImage];
}


- (IBAction)colorize:(id)sender {
    self.imageView.image = nil;
    if(self.hasColor) {
        self.hasColor = FALSE;
        self.imageView.image = [self convertImageToGrayScale:[UIImage imageWithContentsOfFile:self.filePath]];
        NSLog(@"remove Color");
    }
    else {
        self.hasColor = TRUE;
        self.imageView.image = [self convertImageToColorScale:[UIImage imageWithContentsOfFile:self.filePath]];
        NSLog(@"Add Color");
    }
}

当我第一次添加过滤器时,它看起来不错。当我点击按钮更改过滤器时,它很模糊。

1 个答案:

答案 0 :(得分:0)

尝试将行return [UIImage imageWithCIImage:filter.outputImage];替换为:

CIImage *outputImage = [filter outputImage];
CGImageRef imageRef = [[CIContext contextWithOptions:nil] createCGImage:outputImage fromRect:outputImage.extent];
UIImage *newImg = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return newImg;