【问题标题】:UIImage resize with hard edgesUIImage 用硬边调整大小
【发布时间】:2012-07-08 09:00:06
【问题描述】:

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

>

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

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

【问题讨论】:

  • 另外,我可以说我找到了一种使用 Photoshop“动作”进行批量图像处理的好方法。但是我仍然需要一个答案来减小存储的资源图像的大小。

标签: objective-c ios xcode uiimage resize


【解决方案1】:

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

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

【讨论】:

  • 这个答案看起来不错,我需要尽快在 XCode 中检查以接受。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2013-06-22
  • 1970-01-01
相关资源
最近更新 更多