首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >照片大小和压缩

照片大小和压缩
EN

Stack Overflow用户
提问于 2016-09-19 12:44:35
回答 1查看 59关注 0票数 0

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

当我从相册中选择图像时,图像压缩并调整大小。然而,如果我在从相机上传递的图像上这样做,图像就会变得奇怪地小(而且看不出来)。作为测试,我所做的是在我的按钮中分配一些压缩和调整大小的功能,从相机源或相册获取图像。下面是我的代码和控制台输出

代码语言:javascript
复制
@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调整图像1023大小(1080.0,1080.0) 压缩到中等质量=119 to

当照片被摄像机传阅时

在调整图像4653大小之前(24385.536,24385.536) 1080年后调整图像大小25 (1080.576,1080.576) 压缩到中等质量= 4kb

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 13:04:02

我已经用下面的一个替换了图像调整功能,它工作得更好。

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39573524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档