[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:saveImage];
if (_collection) {
PHAssetCollectionChangeRequest *assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:_collection];
[assetCollectionChangeRequest addAssets:@[[assetChangeRequest placeholderForCreatedAsset]]];
}
} completionHandler:^(BOOL success, NSError *error) {
if (!success)
{
NSLog(@"Error creating asset: %@", error);
}
}];
Я использую приведенный выше код и получаю странное фото в фотопленке, похожее на фото 1.
но когда я открываю сохраненную фотографию с помощью VSCO или snapseed, я могу получить обычную версию, которая была той, которую я сохранил.
Является ли это ошибкой Apple Camera Roll?
Очень странно, что это выглядит хорошо. Если я сохраняю входные данные непосредственно в библиотеку фотографий, но после добавления метаданных фотография в системном приложении для фотографий выглядит нечеткой.
-(NSData*)getDataOfImage:(UIImage *)image
metaData:(NSDictionary *)metaData
{
NSData *inputData = UIImageJPEGRepresentation(image,1.0);
CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef) inputData,nil);
NSMutableData *outputData = [NSMutableData new];
CFStringRef UTI = CGImageSourceGetType(imageSource);
CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef) outputData, UTI, 1, NULL);
CGImageDestinationAddImageFromSource (imageDestination, imageSource, 0, (__bridge CFMutableDictionaryRef)metaData);
BOOL result = CGImageDestinationFinalize(imageDestination);
if (result == YES) {
NSLog(@"success: save MetaData");
}else{
NSLog(@"failed :save MetaData ");
}
CFRelease(imageSource);
CFRelease(UTI);
CFRelease(imageDestination);
return outputData;
}