在选择或相机完成后,我将图像保存到自定义相册。显然,在相机完成后,只有一个图像,但是当用户在库选择器中选择图像时,在完成处理程序中,当我将该图像保存到自定义相册时,总是会创建一个副本。在图库和根 photoAlbum 中。似乎无处不在。我无法引用 ID 来查看它是否是之前创建的,因为 ID 是使用占位符新创建的。
有没有办法获取基本图像参考 ID,以便我可以将每个图像与原始图像相关联?据我了解,IOS(我讨厌 ios 顺便说一句)只保存一个实际图像,其余的只是指向原始图像对象的指针。如果是这种情况,我希望有一种方法可以获得对原始图像的可靠引用,并且从那里,我可以轻松管理从该基础图像创建的资产。
public static func addNewImage(_ image:UIImage, toAlbum albumName:String,imageID:String?,onSuccess success:@escaping(String)->Void, onFailure failure:@escaping(Error?)->Void) {
guard let album = self.getAlbum(withName: albumName) else {
failure(SDPhotosHelper.albumNotFoundError)
return
}
var localIdentifier = String();
if(imageID != nil){
if(self.hasImageInAlbum(withIdentifier: imageID!, fromAlbum: albumName)){
failure(SDPhotosHelper.albumNotFoundError)
return;
}
}
PHPhotoLibrary.shared().performChanges({
let albumChangeRequest = PHAssetCollectionChangeRequest(for: album)
let assetCreationRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
//assetCreationRequest.location = "";
let placeHolder = assetCreationRequest.placeholderForCreatedAsset
albumChangeRequest?.addAssets([placeHolder!] as NSArray)
if placeHolder != nil {
localIdentifier = (placeHolder?.localIdentifier)!
}
}) { (didSucceed, error) in
OperationQueue.main.addOperation({
didSucceed ? success(localIdentifier) : failure(error)
})
}
}