我尝试在上传之前尽可能减少图像的文件大小。现在我这样做:
if let firstImageData = UIImageJPEGRepresentation(pickedImage, 0.1) {
self.imgArray.append(firstImageData)
}
这将拍摄来自相机或相册的任何图像,使其成为jpg并缩小其尺寸。
我已将设置设置为 0.1 但是当我上传图片时,尺寸仍然大约为300-350kb,有没有办法我可以调整它们的大小,我的目标是50- 70KB
答案 0 :(得分:20)
您可以先使用这些扩展程序将图片调整为较小尺寸,方法是调整百分比或宽度
extension UIImage {
func resizeWithPercent(percentage: CGFloat) -> UIImage? {
let imageView = UIImageView(frame: CGRect(origin: .zero, size: CGSize(width: size.width * percentage, height: size.height * percentage)))
imageView.contentMode = .ScaleAspectFit
imageView.image = self
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, scale)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
imageView.layer.renderInContext(context)
guard let result = UIGraphicsGetImageFromCurrentImageContext() else { return nil }
UIGraphicsEndImageContext()
return result
}
func resizeWithWidth(width: CGFloat) -> UIImage? {
let imageView = UIImageView(frame: CGRect(origin: .zero, size: CGSize(width: width, height: CGFloat(ceil(width/size.width * size.height)))))
imageView.contentMode = .ScaleAspectFit
imageView.image = self
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, scale)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
imageView.layer.renderInContext(context)
guard let result = UIGraphicsGetImageFromCurrentImageContext() else { return nil }
UIGraphicsEndImageContext()
return result
}
}
使用它就像这样称呼它
myImage = myImage.resizeWithWidth(700)!
现在接下来你仍然可以使用你选择的压缩比来压缩它
let compressData = UIImageJPEGRepresentation(myImage, 0.5) //max value is 1.0 and minimum is 0.0
let compressedImage = UIImage(data: compressData!)
答案 1 :(得分:2)
你只能改变图像的大小(更小的尺寸=更少的数据)并使用像JPEG这样的图像压缩算法来压缩它,没有其他方法(更好的algorythm =相同质量的更小尺寸)。
我最近听说google使用神经网络改进了JPEG算法(谷歌的TensorFlow)