Итак, ваш главный девиз - сравнивать MD5s из 2-х файлов изображений.Итак, вот что я попробовал, и, возможно, это поможет вам
; TLDR - файл, сохраненный в библиотеке, и сам файл не соответствуют мне
public func saveImgToLocal(_ img: UIImage,
onComplete: @escaping () -> Void) {
var blockPlaceholder: PHObjectPlaceholder?
var changeRequest: PHAssetChangeRequest?
PHPhotoLibrary.shared().performChanges({
changeRequest = PHAssetChangeRequest.creationRequestForAsset(from: img)
blockPlaceholder = changeRequest?.placeholderForCreatedAsset
}, completionHandler: { (saved, error) in
//_saved_ is of type bool, you can use it to check whether image is saved
//Here we would fetch the asset using our saved placeholder
let fetchOptions = PHFetchOptions()
let fetchResult:PHFetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [blockPlaceholder!.localIdentifier], options: fetchOptions)
if let asset = fetchResult.firstObject {
//Method to convert asset to Actual image
self.getAsset(asset: asset)
}
onComplete()
})
}
Вот как я сохранилизображение в Local
Вот как я получил изображение из Local
func getAsset(asset: PHAsset) {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
var resultImage = UIImage()
option.isSynchronous = true
manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in
resultImage = result!
let url = info!["PHImageFileURLKey"] as! NSURL
//Image created using the file URL.
let image = UIImage.init(contentsOfFile: url.path!)
//I even compared the resultImage instead of the image from the file
if UIImagePNGRepresentation(image!) == UIImagePNGRepresentation(self.image!) {
print("Same image")
}
})
}
Так что, если вы просто хотите вернуть сохраненное изображение, это можно сделать, но я не уверенсохранено ли изображение в Библиотеке фотографий.HTH: -)