最近在寫(xiě)一個(gè)項(xiàng)目,需要將相機(jī)拍攝的圖片上傳到OSS,說(shuō)起來(lái)很簡(jiǎn)單,第一步將相機(jī)拍的圖片通過(guò)sdwebimage下載下來(lái),然后將圖片上傳到oss,不過(guò)其中遇到了內(nèi)存的問(wèn)題.
因?yàn)橄鄼C(jī)拍攝的圖片是高清圖片,多上傳幾次直接收到內(nèi)存警告的提醒,然后APP就會(huì)崩潰,查找資料發(fā)現(xiàn),上傳圖片到oss有兩種方式.
第一種是通過(guò)是通過(guò)NSData的方式,我剛開(kāi)始就是用的這種方式
NSData *data = UIImageJPEGRepresentation(image, 0.3);
?put.uploadingData= data;
?OSSTask* putTask = [clientputObject:put];
內(nèi)存增高的原因就是這段代碼:UIImageJPEGRepresentation(image, 0.3)
查找資料發(fā)現(xiàn)這種方法確實(shí)會(huì)引起內(nèi)存增高
第二種是通過(guò)圖片路徑來(lái)上傳
put.uploadingFileURL = [NSURL fileURLWithPath:url];
?OSSTask* putTask = [clientputObject:put];
把圖片的路徑傳進(jìn)去就能上傳,至于怎么獲取到sdwebimage下載圖片的路徑,我上一篇文章已經(jīng)寫(xiě)過(guò)了;通過(guò)路徑這種方式上傳就不會(huì)出現(xiàn)內(nèi)存問(wèn)題.
所以,上傳圖片到oss的時(shí)候最好選擇用圖片路徑上傳,如果圖片特別小也可以通過(guò)nsdata這種方法;OSS支持單張上傳也支持多張同時(shí)上傳還是很方便的.