分辨率调整
这里使用画布(Context)对原始图片进行重新绘制
extension UIImage {
func resizedImage(newWidth:CGFloat) -> UIImage?{
if size.width <= newWidth{
return fixOrientation()//需要时进行方向修正
}
let scale = size.width / size.height
let newSize = CGSize(width: newWidth, height: newWidth / scale)
UIGraphicsBeginImageContext(newSize)
self.draw(in: CGRect(origin: .zero, size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
func fixOrientation() -> UIImage?{
if imageOrientation != .up{
UIGraphicsBeginImageContext(size)
draw(in: CGRect(origin: .zero, size: size))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
return self
}
}
使用:
let newImage = image?.resizedImage(newWidth:1000)
不更改分辨率缩小图片data大小
可以使用自带的jpeg压缩
let new image = image.jpegData(compressionQuality: 0.99)
实际使用的时候发现压缩系数为0.99相比压缩系数为1.0时生成的data长度小了一半,也没有花时间去对比质量(能用就行。。。)
网友评论