如何在执行CIFilter时保留iOS UIImageView中的图像宽高比,如CISepiaTone

在iOS中,我的UIImageView是“Aspect Fit”,但是当我执行类型为“CISepiaTone”的CIFilter时,我会丢失原始图像宽高比。 图像被拉伸到整个UIImageView大小。

如何保留纵横比?

如果要使用imageWithCIImage创建过滤后的图像,则无法获得正确的宽高比。 尝试从filter输出CIImage创建CGImageRef,然后从CGImageRef创建UIImage。

例:

// assume you already have CIImage *outputImage and *inputImage declared // convert to CGImage to maintain proper aspect ratio and dimensions CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef imageRef = [context createCGImage:outputImage fromRect:inputImage.extent]; UIImage *filteredImage = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); 

然后,您可以尝试使用filteredImage设置imageView。