调整图像大小会导致分辨率降低

时间:2016-06-18 14:34:45

标签: ios swift mapkit

所以我试图将特定的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 

谢谢!

1 个答案:

答案 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)。