已经好久没有写过博客了!最近做一个新的项目,对于一些业务逻辑层的东西几乎忘得差不多了。所以现在才想着要写一些文章来记录一下自己碰到过的一些业务逻辑遇到的一些问题,以后也会更新一下自己学数据结构与算法的学习笔记。
问题:选择图片上传,限制图片大小在5M以内
首先从相册里获取到的图片对象asset,通过PHImageManager的方法转化得到image图片的二进制数据imageData
然后计算得出图片的大小
let imageManager = PHImageManager.default()
imageManager.requestImageData(for: asset, options: nil) { (imageData, dtf, orien, hals) in
//M为单位的大小
let size:CGFloat = CGFloat(Double(imageData!.count)/(1024*1024.0))
}
转化压缩图片,如果超过5M的就压缩成5M
然后把图片和二进制数据分开存进自己的数据模型
self.displayAlertRootViewController?.presentHGImagePicker(maxSelected:self.maxIMGCount-self.imageArr.count) { (assets) in
for asset in assets {
var imageData:Image = Image.init(errorMsg: "", imageIndex: 0, imageUrl: "")
let data = resetImgSize(sourceImage: self.PHAssetToImage(asset: asset), maxImageLenght: 5024, maxSizeKB: 5024)
imageData.imageData = UIImage.init(data: data)
imageData.data = data as NSData
if self.imageArr.count == 0 {
imageData.imageMain = 1
}
self.imageArr.append(imageData)
}
self.photoSubject.onNext(self.imageArr)
self.reloadList()
}
如果是用已经转化好的Image然后转二进制Data数据,所得到的data大小是比原来的大十倍,甚至更多
imageData.imageData.pngData()