Sto passando i file di immagine e video archiviati a: PHLivePhoto.requestLivePhotoWithResourceFileURLs
e ottenendo un oggetto PHLivePhoto
che posso visualizzare in PHLivePhotoView
. Ma mi sto chiedendo, una volta che ho uno PHLivePhoto
c'è un modo per salvarlo nella libreria di foto?C'è un modo per salvare una foto live nella libreria foto?
risposta
NSURL *photoURL = ...;
NSURL *videoURL = ...;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetCreationRequest *request = [PHAssetCreationRequest creationRequestForAsset];
//These types should be inferred from your files
//PHAssetResourceCreationOptions *photoOptions = [[PHAssetResourceCreationOptions alloc] init];
//photoOptions.uniformTypeIdentifier = @"public.jpeg";
//PHAssetResourceCreationOptions *videoOptions = [[PHAssetResourceCreationOptions alloc] init];
//videoOptions.uniformTypeIdentifier = @"com.apple.quicktime-movie";
[request addResourceWithType:PHAssetResourceTypePhoto fileURL:photoURL options:nil /*photoOptions*/];
[request addResourceWithType:PHAssetResourceTypePairedVideo fileURL:videoURL options:nil /*videoOptions*/];
} completionHandler:^(BOOL success, NSError * _Nullable error) {
NSLog(@"success? %d, error: %@",success,error);
}];
Impressionante! La scorsa notte, mentre stavo cercando di farlo funzionare, mi sono alzato per aggiungere ResourceWithType e mi aspettavo che ci fosse PHAssetResourceTypeLivePhoto. Quando non ci sono stato ho capito che mi mancava qualcosa. Ho completamente vetrato sulla sezione del tipo pairedvideo ... – Landon
Swift 3:
PHPhotoLibrary.shared().performChanges({
let request = PHAssetCreationRequest.forAsset()
request.addResource(with: .photo, fileURL: photoURL, options: nil)
request.addResource(with: .pairedVideo, fileURL: videoURL, options: nil)
}) { (success, error) in
print(success)
print(error?.localizedDescription ?? "error")
}
È possibile aggiungere risorse anche con Data invece di utilizzare un file. Inoltre, "stampa (errore" stamperà sempre qualcosa, anche se ha funzionato.) Grazie per questo esempio. –
mi chiedo la stessa cosa. La documentazione dice "Per importare una foto live nella libreria Foto, usa la classe PHAssetCreationRequest." Tuttavia, il metodo creationRequestForAsset non sembra prendere un PHLivePhoto. https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAssetCreationRequest_Class/index.html#//apple_ref/occ/clm/PHAssetCreationRequest/creationRequestForAsset – Landon