iOS,如何保存Photo Sphere XMP元数据,同时将其保存到相机胶卷?

时间:2016-03-23 08:07:32

标签: ios exif alassetslibrary xmp camera-roll

我可以将Photo Sphere XMP Metadata添加到equirectangular照片中。 我将带有XMP元数据的照片上传到Google相册,Google照片可以被识别为球形照片。 然后,我尝试将带有XMP元数据的照片保存到相机胶卷。 我通过相机胶卷将照片分享给Google相册,但Google相册并不知道这是一张球形照片。 我试图下载照片并对其进行分析,发现XMP元数据全部消失了。 当照片保存到相机胶卷时,iOS似乎会编辑元数据。 有没有办法保存照片的XMP元数据,同时将其保存到相机胶卷?

// raw jpg data to NSData
NSString *img = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"equirectangular_orig.jpg"];
NSData* imgData = [[NSFileManager defaultManager] contentsAtPath:img];
NSMutableData *newImgData = [NSMutableData dataWithData:imgData];

// writing XMP metadata to newImgData
// ...
// ...

// saving the newImgData to new jpg file
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"equirectangular_xmp.jpg"];
NSURL *url = [NSURL fileURLWithPath:path];
[[NSFileManager defaultManager] removeItemAtPath:[url absoluteString] error:nil];
[newImgData writeToURL:url atomically:YES];

// saving the new jpg file to camera roll
UIImage *newImg = [UIImage imageWithData:newImgData];
UIImageWriteToSavedPhotosAlbum(newImg, self, nil, nil);

1 个答案:

答案 0 :(得分:0)

重点:使用

.as-console-wrapper {max-height: 100%!important;}

代替

[PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL: url] 

由于UIImage会破坏原始文件,因此只需使用临时URL保存原始图像原始数据,并使用creationRequestForAssetFromImageAtFileURL api。