網(wǎng)上找了很多的資料貌似都沒有很好的解決這個(gè)問題。
先簡(jiǎn)單的描述下错蝴,照片是我從服務(wù)器獲取到的洲愤,一個(gè)大小為8M的jpg圖片,下載后保存到了沙盒顷锰,然后根據(jù)沙盒中的圖像使用這個(gè)方法來存到相冊(cè)
UIImageWriteToSavedPhotosAlbum(_:_:_:_:)
結(jié)果是柬赐,大小為8M的圖,存到相冊(cè)這有3M左右了官紫。
ps:別問怎么看的照片大小肛宋,看照片大小的方式很多種,iTunes束世,微信酝陈,調(diào)用Photos
requestImage(for:targetSize:contentMode:options:resultHandler:)都可以查看圖片的大小。
圖片的信息全都沒有了毁涉,創(chuàng)建日期顯示的為當(dāng)前日期沉帮。
各個(gè)論壇找了一遍最后解決了,但是原因還是不能具體的描述很清楚
解決辦法是:
直接獲取當(dāng)前要存儲(chǔ)照片的url贫堰,然后使用以下方法存入相冊(cè)穆壕。
creationRequestForAssetFromImage(atFileURL:)
猜測(cè):
UIImageWriteToSavedPhotosAlbum(_:_:_:_:)
方法會(huì)導(dǎo)致元數(shù)據(jù)丟失以及由于解壓和重新壓縮而導(dǎo)致大小改變,特別是jpeg它本身就是壓縮格式其屏,
下載后放到UIImage里會(huì)有壓縮以及一些特別的處理喇勋,所以盡量不直接去用UIImage去存,而是使用URL偎行。
最后的最后放個(gè)整段代碼:
//imageUrl為圖片的路徑
PHPhotoLibrary.requestAuthorization { status in
if case .authorized = status {
DispatchQueue.main.async {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromImage(atFileURL: imageUrl!)
}) { (success, error) in
if let error = error {
print(error)
} else {
print("保存成功")
}
}
}
}
}