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) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java设计模式学习记录-状态模式 Java设计模式学
- ReactNative下载第三方库出错解决Error: EPERM: operation
- Nosql数据库——redis(四)数据类型
- org.xml.sax.SAXParseException: Failed to read schema do
- c# – 如何使用MVVM模式在Wpf应用程序上实现本地化?
- React中文教程 - Component Lifecycle(组件的生命周期)
- ruby-on-rails – 从VirtualBox访问Rails服务器
- 正则表达式资料收集
- ajax全接触
- ruby-on-rails – 如何告诉Builder不要逃避值