我需要一种类似于Photoshop中的“最近邻”重采样方法来调整UIImage的大小。我正在寻找相关信息,但所有我找到的都是关于CoreGraphics改善双三次重采样质量的技巧。我的应用中有像素样式设计,我创建了很多东西并使用x5倍增加它们(这需要很长时间,所以我甚至接近为Photoshop编写脚本)。例如下图所示:
>
但我真的不需要像重采样结果那样的效果:
或许可以有人能给我指点正确的方向。
![enter image description here](https://istack.dev59.com/RSTOa.webp)
![enter image description here](https://istack.dev59.com/D0zxR.webp)
![enter image description here](https://istack.dev59.com/wA8Wj.webp)
当您将图像绘制到图形上下文中时,您可以将图形上下文的插值质量设置为“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;
这样做可能更快,更省内存,因为您不需要重新绘制图像。