【问题标题】:Photo resizing and compressing照片调整大小和压缩
【发布时间】:2017-01-27 03:56:20
【问题描述】:

我正在调整和压缩我的照片,这是一个不寻常的结果。

当我从相册中选择图像时,图像会很好地压缩和调整大小。但是,如果我在从相机传递的图像上执行此操作,则图像会变得异常小(并且无法观看)。我所做的测试是在我的按钮中分配一些压缩和调整大小的功能,该功能可以从相机源或相册中获取图像。下面是我的代码和控制台输出

@IBAction func testBtnPressed(sender: AnyObject) {
    let img = selectedImageView.image!
    print("before resize image \(img.dataLengh_kb)kb size \(img.size)")
    
    let resizedImg = img.resizeWithWidth(1080)
    print("1080 After resize image \(resizedImg!.dataLengh_kb)kb size \(resizedImg!.size)")
    
    let compressedImageData = resizedImg!.mediumQualityJPEGNSData
    print("Compress to medium quality = \(compressedImageData.length / 1024)kb")
}

extension UIImage {
    var mediumQualityJPEGNSData: NSData  { return UIImageJPEGRepresentation(self, 0.5)!  }
    
    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
    }
}

从相册中选择照片时

调整图片大小前 5004kb 大小(3024.0, 3024.0)

1080 调整图片大小后 1023kb 大小 (1080.0, 1080.0)

压缩到中等质量 = 119kb

当照片被相机通过时

在调整图像大小之前 4653kb 大小(24385.536、24385.536)

1080 调整大小后的图像 25kb 大小 (1080.576, 1080.576)

压缩到中等质量 = 4kb

【问题讨论】:

    标签: ios swift image compression


    【解决方案1】:

    我已将图像大小调整功能替换为以下功能,效果更好

    func resizeImage(newHeight: CGFloat) -> UIImage {
    
        let scale = newHeight / self.size.height
        let newWidth = self.size.width * scale
        UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight))
        self.drawInRect(CGRectMake(0, 0, newWidth, newHeight))
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
    
        return newImage
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      相关资源
      最近更新 更多