UIImage用硬边调整大小

kok*_*oko 8 xcode resize objective-c uiimage ios

我需要一种调整UIImage的方法,就像在photoshop中使用"最近邻居"重新采样一样.我正在寻找一些,但我发现的一切都是关于CoreGraphics厚度来改善双三次重采样质量.我的应用程序中有像素风格的设计,我用像素创建的很多东西然后用x5乘数放大(这需要花费很多时间,所以我甚至接近为Photoshop编写脚本).例如:

在此输入图像描述 > 在此输入图像描述

但我真的不需要重新取样的结果:

在此输入图像描述

也许有人会告诉我正确的方法.

omz*_*omz 19

将图像绘制到图形上下文中时,可以将图形上下文的插值质量设置为"无",如下所示(例如,在视图的drawRect方法中):

CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(c, kCGInterpolationNone);
UIImage *image = [UIImage imageNamed:@"pixels.png"];
[image drawInRect:self.bounds];
Run Code Online (Sandbox Code Playgroud)

如果您需要将结果作为UIImage(例如将其分配给内置UI控件),您可以使用UIGraphicsBeginImageContext(您将找到许多示例).

另一种方法是设置magnificationFilter图像视图图层的属性:

pixelatedImageView.layer.magnificationFilter = kCAFilterNearest;
Run Code Online (Sandbox Code Playgroud)

这可能更快,内存效率更高,因为您不需要重绘图像.