網上找了很多的資料貌似都沒有很好的解決這個問題。
先簡單的描述下,照片是我從服務器獲取到的,一個大小為8M的jpg圖片,下載后保存到了沙盒,然后根據沙盒中的圖像使用這個方法來存到相冊
UIImageWriteToSavedPhotosAlbum(_:_:_:_:)
結果是,大小為8M的圖,存到相冊這有3M左右了。
ps:別問怎么看的照片大小,看照片大小的方式很多種,iTunes,微信,調用Photos
requestImage(for:targetSize:contentMode:options:resultHandler:)都可以查看圖片的大小。
圖片的信息全都沒有了,創建日期顯示的為當前日期。
各個論壇找了一遍最后解決了,但是原因還是不能具體的描述很清楚
解決辦法是:
直接獲取當前要存儲照片的url,然后使用以下方法存入相冊。
creationRequestForAssetFromImage(atFileURL:)
猜測:
UIImageWriteToSavedPhotosAlbum(_:_:_:_:)
方法會導致元數據丟失以及由于解壓和重新壓縮而導致大小改變,特別是jpeg它本身就是壓縮格式,
下載后放到UIImage里會有壓縮以及一些特別的處理,所以盡量不直接去用UIImage去存,而是使用URL。
最后的最后放個整段代碼:
//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("保存成功")
}
}
}
}
}