CGAffineTransformScale会影响图像质量

时间:2014-01-24 14:25:14

标签: ios objective-c cgaffinetransform cgaffinetransformscale

我有一个通过UIPinchGesture缩小的视图。该视图的子视图是具有关联图像的UIImageView。问题是当尺寸缩小到原来较大尺寸的1/4时,尺度下降似乎会显着影响图像的质量。

我很好奇是否有办法解决这个问题,而不是在缩小图像时按照缩小的尺寸重新绘制图像。

1 个答案:

答案 0 :(得分:2)

我会说不。

在所有状态下(不重新调整任何内容),您必须提高图像可见质量的最佳选择是将原始图像缩放到屏幕上最大和最小尺寸之间的中间尺寸。这将导致GPU进行最少的图像缩放。

除此之外,只需在通过以下方式将变换应用于视图时重新缩放图像:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
    //UIGraphicsBeginImageContext(newSize);
    // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
    // Pass 1.0 to force exact pixel size.
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

您可能需要担心宽高比,但这完全是另一个问题。