最近在写一个项目,需要将相机拍摄的图片上传到OSS,说起来很简单,第一步将相机拍的图片通过sdwebimage下载下来,然后将图片上传到oss,不过其中遇到了内存的问题.
因为相机拍摄的图片是高清图片,多上传几次直接收到内存警告的提醒,然后APP就会崩溃,查找资料发现,上传图片到oss有两种方式.
第一种是通过是通过NSData的方式,我刚开始就是用的这种方式
NSData *data = UIImageJPEGRepresentation(image, 0.3);
put.uploadingData= data;
OSSTask* putTask = [clientputObject:put];
内存增高的原因就是这段代码:UIImageJPEGRepresentation(image, 0.3)
查找资料发现这种方法确实会引起内存增高
第二种是通过图片路径来上传
put.uploadingFileURL = [NSURL fileURLWithPath:url];
OSSTask* putTask = [clientputObject:put];
把图片的路径传进去就能上传,至于怎么获取到sdwebimage下载图片的路径,我上一篇文章已经写过了;通过路径这种方式上传就不会出现内存问题.
所以,上传图片到oss的时候最好选择用图片路径上传,如果图片特别小也可以通过nsdata这种方法;OSS支持单张上传也支持多张同时上传还是很方便的.