선택 또는 카메라 완료 후 이미지를 사용자 정의 앨범에 저장합니다. 분명히 카메라가 완료된 후에는 하나의 이미지 만 있지만 사용자가 갤러리 선택 도구에서 이미지를 선택하면 완료 핸들러에서 해당 이미지를 사용자 정의 앨범에 저장할 때 항상 복제본이 만들어집니다. 갤러리와 루트 사진 앨범 모두. 도처에, 그것은 보인다. 이전에 생성되었는지 확인하기 위해 ID를 참조 할 수 없습니다. ID가 자리 표시자를 사용하여 새로 작성되기 때문입니다.스위프트 3 또는 4 custum 앨범에 저장하면 중복 이미지가 생성됩니다.
모든 이미지를 원본 이미지에 연결할 수 있도록 기본 이미지 참조 ID를 가져 오는 방법이 있습니까? 내가 이해하는 것처럼, IOS는 (ios btw가 싫다.) 하나의 실제 이미지 만 저장하고 나머지는 원래 이미지 객체에 대한 포인터 일 뿐이다. 그렇다면 원래 이미지에 대한 확실한 참조를 얻을 수있는 방법이있을 것이라고 기대합니다. 거기에서 그 기본 이미지로 생성 된 애셋을 쉽게 관리 할 수 있습니다.
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)
})
}
}
이것은 매우 유용합니다! 비슷한 질문이 있습니다. https://stackoverflow.com/questions/47378305/how-do-i-copy-an-image-from-the-iphone-photos-library-to-my-album-without-having? noredirect = 1 # comment81709017_47378305 –