UIImageView缩放/插值

14

我正在开发一个小型的iPhone应用程序,使用UIImageView来显示一张图片。通过使用Aspect Fit模式,我将它放大。我想让这张图片在放大时没有插值/平滑(我希望它看起来像素化)。是否有任何方法可以改变这种行为?

更一般的问题是,我是否可以实现自己的缩放算法,或者是否有其他内置的算法可供选择?

4个回答

24

您需要在视图的图层上设置magnificationFilter属性为最近邻过滤器:

[[view layer] setMagnificationFilter:kCAFilterNearest]

1
正如rekle的回答所说,当使用setMagnificationFilter时,请确保添加#import <QuartzCore/CALayer.h>。 - Niklas Berglund
1
太好了,达到了我的目的,但我想问一下,当我使用 magnificationFilter = kCAFilterNearest 时,放大的大而锐利的像素是否真的是图像的原始像素,还是由某些处理产生的?谢谢! - Suge

5

Swift

imageView.layer.magnificationFilter = kCAFilterNearest
imageView.layer.shouldRasterize = true

5
请确保您包含该行
#import  <QuartzCore/CALayer.h>

在调用setMagnificationFilter的文件顶部,否则它将无法编译。


将QuartzCore框架添加到您的项目中(Groups&Files-> Add-> ExistingFrameworks ...-> QuartzCore.framework-> Add)。 - suda

-2

你可以有两种方法来实现这个。你可以实现一个没有插值的重新缩放算法。如果这太麻烦了,你可以在其他应用程序中像gimp或photoshop中重新缩放图像。这将起作用,除非你需要在你的应用程序中动态改变大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接