背景 我们在做社区服务app时必不可少的是要做独立的发布器,发布器中需要本地图片选择时,我们会找一些系统的方法去转换,有涉及到PHAsset转换成UIImage的地方,比如使用PHImageManag
/// PHPAsset转UIImage private func getImageFromAsset(asset: PHAsset) -> UIImage { let manager = PHImageManager.default() let option = PHImageRequestOptions() option.isNetworkAccessAllowed = true var image = UIImage() option.isSynchronous = true //方法一:使用此requestImage方法会存在的问题-转化完成后,获得的image对象,图片很大时极易导致app崩溃(因为requestImageForAsset会对图片渲染,大图时导致内存暴涨) // target: CGSize(width: 100, height: 100) 固定大小-> PHImageManagerMaximumSize 原始大小 manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: option, resultHandler: { (result, info) -> Void in if let success = result { image = success } }) //方法二:此方法吧PHAsset转化为data对象,我们再使用data对象转化为image,(直接返回二进制数据,避免内存暴涨) manager.requestImageData(for: asset, options: option) { (imgData, str, imGori, dic) in if let imgData = imgData { image = UIImage(data: imgData) ?? UIImage() } } return image }
来源地址:https://blog.csdn.net/MOON_YZM/article/details/127547002
--结束END--
本文标题: iOS开发-PHAsset转UIImage坑点
本文链接: https://www.lsjlt.com/news/411275.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-11
2024-05-11
2024-05-10
2024-05-07
2024-04-30
2024-04-30
2024-04-30
2024-04-29
2024-04-29
2024-04-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0