所以我试图将特定的PNG图像用于我的地图注释。原始图像为761 x 761,显示在我的应用程序中的调整大小的注释图像都是模糊的,低分辨率的。知道为什么会这样吗?
chargerAnnotationImage = UIImage(named: "ChargerGreen")!
let size = CGSize(width: 25, height: 25)
UIGraphicsBeginImageContext(size)
chargerAnnotationImage.drawInRect(CGRectMake(0, 0, size.width, size.height))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resizedImage
谢谢!
答案 0 :(得分:0)
可以在UIKit框架中找到用于图像大小调整的最高级API。给定UIImage,可以使用UIGraphicsBeginImageContextWithOptions()和UIGraphicsGetImageFromCurrentImageContext()来使用临时图形上下文来渲染缩放版本:
let image = UIImage(named: "x-men")!
let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(0.1, 0.1))
let hasAlpha = false
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
image.drawInRect(CGRect(origin: CGPointZero, size: size))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
UIGraphicsBeginImageContextWithOptions()创建一个临时渲染上下文,绘制原始内容。第一个参数size是缩放图像的目标大小。第二个参数isOpaque用于确定是否呈现alpha通道。对于没有透明度的图像(即alpha通道)将此设置为false可能会导致图像具有粉红色调。第三个参数比例是显示比例因子。设置为0.0时,使用主屏幕的比例因子,Retina显示的比例因子为2.0或更高(iPhone 6 Plus上为3.0)。