UIImage用硬边调整大小

时间:2012-07-08 21:46:50

标签: objective-c ios xcode uiimage resize

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

enter image description here> enter image description here

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

enter image description here

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

1 个答案:

答案 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;

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