swift ios在上传之前缩小图像大小

我在上传之前尽可能地减少图像的文件大小。 现在我这样做:

if let firstImageData = UIImageJPEGRepresentation(pickedImage, 0.1) { self.imgArray.append(firstImageData) } 

这将拍摄来自相机或相册的任何图像,使其成为jpg并减小其尺寸。

我已将设置设置为0.1,但是当我上传图像时,大小仍然大约为300-350kb,有没有什么方法可以调整它们的大小,我的目标是50-70kb

您可以使用这些扩展名将图像调整为较小尺寸,方法是按百分比或宽度调整图像大小

 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!) 

您只能通过使用像JPEG这样的图像压缩算法来更改图像的大小(更小的尺寸=更少的数据)并进行压缩,没有其他方法(更好的algorythm =相同质量的更小尺寸)。

我最近听说google使用神经网络改进了JPEG算法(谷歌的TensorFlow)