8

我需要一种方法来调整 UIImage 的大小,就像在 Photoshop 中使用“最近邻”重采样一样。我一直在寻找一些,但我发现的所有内容都是关于 CoreGraphics 厚度以提高双三次重采样质量。我的应用程序中有像素风格的设计,我按像素创建了很多东西,然后用 x5 乘数放大(这需要很多时间,所以我什至接近为 Photoshop 编写脚本)。例如:

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

但我真的不需要这样的重采样结果:

在此处输入图像描述

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

4

1 回答 1

20

当您将图像绘制到图形上下文中时,您可以将图形上下文的插值质量设置为“无”,如下所示(例如在视图的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;

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

于 2012-07-12T17:37:37.373 回答