加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 如何在运行时正确压缩UIImages

发布时间:2020-12-14 17:23:30 所属栏目:百科 来源:网络整理
导读:我需要加载4张图像进行同步编辑.当我从用户库加载它们时,内存超过500mb并崩溃. 在进行任何压缩尝试之前,这是来自原始分配转储的日志: 码: var pickedImage = UIImage(data: imageData) 仪器: 我已经阅读了几篇关于压缩UIImages的帖子.我试过减少UIImage:
我需要加载4张图像进行同步编辑.当我从用户库加载它们时,内存超过500mb并崩溃.

在进行任何压缩尝试之前,这是来自原始分配转储的日志:

码:

var pickedImage = UIImage(data: imageData)

仪器:

我已经阅读了几篇关于压缩UIImages的帖子.我试过减少UIImage:

新守则:

var pickedImage = UIImage(data: imageData,scale:0.1)

仪器:

减少UIImage的规模没有效果?!很奇怪.

所以现在我尝试基于完整的UIImage创建JPEG压缩

新代码:

var pickedImage = UIImage(data: imageData)
var compressedData:NSData = UIImageJPEGRepresentation(pickedImage,0)
var compressedImage:UIImage = UIImage(data: compressedData)!//this is now used to display

仪器:

现在,我怀疑因为我正在转换它仍在加载的图像.由于这一切都发生在来自PHImageManager的回调中,我需要一种从NSData创建压缩UIImage的方法,但是将比例设置为0.1并没有.

所以关于如何从NSData压缩这个UIImage的任何建议都会挽救生命!

谢谢

解决方法

在处理图像之前,我最终硬编码了尺寸缩小.这是代码:

PHImageManager.defaultManager().requestImageForAsset(asset,targetSize:CGSizeMake(CGFloat(asset.pixelWidth),CGFloat(asset.pixelHeight)),contentMode: .AspectFill,options: options)
                {
                    result,info in
                    var minRatio:CGFloat = 1
                    //Reduce file size so take 1/2 UIScreen.mainScreen().bounds.width/2 || CGFloat(asset.pixelHeight) > UIScreen.mainScreen().bounds.height/2)
                    {
                        minRatio = min((UIScreen.mainScreen().bounds.width/2)/(CGFloat(asset.pixelWidth)),((UIScreen.mainScreen().bounds.height/2)/CGFloat(asset.pixelHeight)))
                    }
                    var size:CGSize = CGSizeMake((CGFloat(asset.pixelWidth)*minRatio),(CGFloat(asset.pixelHeight)*minRatio))
                    UIGraphicsBeginImageContextWithOptions(size,false,0.0)
                    result.drawInRect(CGRectMake(0,size.width,size.height))
                    var final = UIGraphicsGetImageFromCurrentImageContext()
                    var image = iImage(uiimage: final)
                }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读