我希望以一种方式放大UIImage,使用户能够清晰地看到UIImage中的像素。当我将其放入UIImageView并缩放变换矩阵时,UIImage会出现抗锯齿和平滑处理。
是否有一种方法可以通过简单地重复每行和每列来在更大的位图上下文中呈现,从而获得更大的像素?我该怎么做?
我希望以一种方式放大UIImage,使用户能够清晰地看到UIImage中的像素。当我将其放入UIImageView并缩放变换矩阵时,UIImage会出现抗锯齿和平滑处理。
是否有一种方法可以通过简单地重复每行和每列来在更大的位图上下文中呈现,从而获得更大的像素?我该怎么做?
#import <QuartzCore/CALayer.h>
view.layer.magnificationFilter = kCAFilterNearest
view.layer.shouldRasterize = YES
。这是为了避免出现某些图像每个像素显示4个像素的问题。 - Jeffrey SunmagnificationFilter = kCAFilterNearest
时,放大的大而锐利的像素是否真的是图像的原始像素,还是由某些处理产生的?谢谢! - SugeSwift 5
let image = UIImage(named: "Foo")
let scaledImageSize = image.size.applying(CGAffineTransform(scaleX: 2, y: 2))
UIGraphicsBeginImageContext(scaledImageSize)
let scaledContext = UIGraphicsGetCurrentContext()!
scaledContext.interpolationQuality = .none
image.draw(in: CGRect(origin: .zero, size: scaledImageSize))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()!
在直接绘制位图上下文时,我们可以使用以下方法:
CGContextSetInterpolationQuality(myBitmapContext, kCGInterpolationNone);
我在CGContextDrawImage很慢的iPhone 4上发现了这个问题。
我也试过在子层上尝试这个方法,但是无法生效,依然模糊。我需要做的是:
const CGFloat PIXEL_SCALE = 2;
layer.magnificationFilter = kCAFilterNearest; //Nearest neighbor texture filtering
layer.transform = CATransform3DMakeScale(PIXEL_SCALE, PIXEL_SCALE, 1); //Scale layer up
//Rasterize w/ sufficient resolution to show sharp pixels
layer.shouldRasterize = YES;
layer.rasterizationScale = PIXEL_SCALE;
对于从CIImage创建的UIImage,您可以使用以下代码:
imageView.image = UIImage(CIImage: ciImage.imageByApplyingTransform(CGAffineTransformMakeScale(kScale, kScale)))