2012-07-08 110 views
8

我需要一种调整UIImage大小的方法,就像使用“最近邻居”重采样的photoshop。我一直在寻找一些,但我发现的一切都是关于CoreGraphics的厚度来提高双三次采样质量。我在我的应用中使用了像素风格的设计,并且我通过像素创建了很多东西,然后用x5倍增器放大(这需要很多时间,所以我甚至接近为Photoshop编写脚本)。例如:UIImage调整硬边缘

enter image description here>enter image description here

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

enter image description here

也许有人会告诉我的正确途径。

+0

作为补充,我可以说我已经找到了批量图像处理与photoshop“行动”的好方法。但我仍然需要一个答案,以减少存储的资源图像的大小。 – kokoko 2012-07-12 17:37:29

回答

16

当您绘制图像转化为图形上下文,可以设置图形上下文的插值质量为“无”,像这样(在视图中的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; 

这可能是更快,更内存高效的,因为你并不需要重新绘制图像。

+0

这个答案看起来不错,我需要在XCode很快接受它。谢谢。 – kokoko 2012-07-12 17:41:02