Saving a photo with metadata in Camera Roll with a specific file name

I am trying to save an image using exif metadata using the following code:

+(void)saveImageWithMetaToCameraRoll:(UIImage*)image location:(CLLocation*)location album:(PHAssetCollection *)album exif:(NSDictionary *)metadata isOriginal:(BOOL)isOriginal isFavorite:(BOOL)isFavorite completionBlock:(PHAssetBoolBlock)completionBlock { NSMutableDictionary *meta = [metadata mutableCopy]; NSData *imageData = UIImageJPEGRepresentation(image, 1.0f); CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef) imageData, NULL); if (!isOriginal) { [meta resetOrientation]; } NSString *timestamp = [NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970] * 1000]; NSString *fileName = [NSString stringWithFormat:@"IMG_%@_%@.jpeg", timestamp, isOriginal ? @"orig" : @"d"]; [meta setTitle:fileName]; NSURL *tmpURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:fileName]]; CGImageDestinationRef destination = CGImageDestinationCreateWithURL((__bridge CFURLRef) tmpURL, kUTTypeJPEG, 1, NULL); CGImageDestinationAddImageFromSource(destination, source, 0, (__bridge CFDictionaryRef) meta); CGImageDestinationFinalize(destination); CFRelease(source); CFRelease(destination); [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ PHAssetChangeRequest *newAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:tmpURL]; PHObjectPlaceholder *placeholderAsset = newAssetRequest.placeholderForCreatedAsset; if (album) { PHAssetCollectionChangeRequest *changeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:album]; [changeRequest addAssets:@[placeholderAsset]]; } } completionHandler:^(BOOL success, NSError *error) { //Clean up the file: [[NSFileManager defaultManager] removeItemAtURL:tmpURL error:nil]; if (error) { NSLog(@"%@", error); } completionBlock(success); }]; } 

It is noted that some applications (Snapseed, Photoshop and others) can set their own file name when exporting images to Camera Roll. And I can’t understand exactly how they do it. Any ideas?

PS: I already tried this way and it did not work on iOS 10.3.1

+5
source share

Source: https://habr.com/ru/post/1266960/


All Articles