我需要一种调整UIImage的方法,就像在photoshop中使用“最近邻居”重新采样一样。我正在寻找一些,但我发现的一切都是关于CoreGraphics厚度来改善双三次重采样质量。我的应用程序中有像素风格的设计,我用像素创建的很多东西然后用x5乘数放大(这需要花费很多时间,所以我甚至接近为Photoshop编写脚本)。例如:
>
但我真的不需要重新取样的结果:
也许有人会告诉我正确的方法。
答案 0 :(得分:18)
当您将图像绘制到图形上下文中时,您可以将图形上下文的插值质量设置为“无”,就像这样(例如在视图的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;
这可能更快,内存效率更高,因为您不需要重绘图像。