在 iOS 中,我的 UIImageView 是“Aspect Fit”,但是当我执行例如“CISepiaTone”类型的 CIFilter 时,我失去了原始图像的纵横比。图像被拉伸到整个 UIImageView 大小。
如何保持纵横比?
在 iOS 中,我的 UIImageView 是“Aspect Fit”,但是当我执行例如“CISepiaTone”类型的 CIFilter 时,我失去了原始图像的纵横比。图像被拉伸到整个 UIImageView 大小。
如何保持纵横比?
如果您使用 imageWithCIImage 创建过滤后的图像,那么您将无法获得正确的纵横比。尝试从过滤器输出 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。