UIImage的drawInrect:平滑图像

时间:2012-09-14 15:19:54

标签: ios uikit uiimage antialiasing

我正在尝试使用UIImage的{​​{1}}方法绘制图像。这是代码:

drawInRect:

问题是生成的图像模糊。这是与源图像(左侧)相比得到的图像(在右侧):

Source image and blurred image

我已经尝试了UIImage *image = [UIImage imageNamed:@"OrangeBadge.png"]; UIGraphicsBeginImageContext(image.size); [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), NO),但这并没有解决问题。

有什么想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:30)

如果您正在使用视网膜设备进行开发,可能问题与图形上下文的分辨率有关。你会尝试:

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0f);

这将启用视网膜分辨率。此外,您的图像应该以@ 2x分辨率提供,以便工作。

如果您也想支持非视网膜设备,可以使用:

if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0f);
} else {
    UIGraphicsBeginImageContext(newSize);
}