UIImage大小调整并保留锐利边缘

8
我需要一种类似于Photoshop中的“最近邻”重采样方法来调整UIImage的大小。我正在寻找相关信息,但所有我找到的都是关于CoreGraphics改善双三次重采样质量的技巧。我的应用中有像素样式设计,我创建了很多东西并使用x5倍增加它们(这需要很长时间,所以我甚至接近为Photoshop编写脚本)。例如下图所示: enter image description here > enter image description here 但我真的不需要像重采样结果那样的效果: enter image description here 或许可以有人能给我指点正确的方向。

另外,我可以说我已经找到了一种使用Photoshop“动作”进行批量图像处理的好方法。但是我仍然需要一个答案来减小存储资源图像的大小。 - kokoko
1个回答

20

当您将图像绘制到图形上下文中时,您可以将图形上下文的插值质量设置为“none”,就像这样(例如,在视图的 drawRect 方法中):

CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(c, kCGInterpolationNone);
UIImage *image = [UIImage imageNamed:@"pixels.png"];
[image drawInRect:self.bounds];
如果你需要将结果作为UIImage(例如分配给内置的UI控件),你可以使用UIGraphicsBeginImageContext来实现这一点(你会发现有很多示例)。
另一种方法是设置图像视图层的magnificationFilter属性:
pixelatedImageView.layer.magnificationFilter = kCAFilterNearest;

这样做可能更快,更省内存,因为您不需要重新绘制图像。


这个答案看起来不错,我很快就要在XCode中检查它以接受。谢谢。 - kokoko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接