iOS,如何保存照片球体XMP元数据,同时将其保存到相机胶卷



我可以将Photo Sphere XMP元数据添加到一张等矩形照片中。我将带有XMP元数据的照片上传到谷歌照片,谷歌照片可以被识别为球体照片。然后,我尝试将带有XMP元数据的照片保存到相机胶卷中。我把相机胶卷上的照片分享给了谷歌照片,但谷歌照片不知道这是一张球体照片。我试着下载照片并对其进行分析,发现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);

要点:使用

[PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL: url] 

而不是

[PHAssetChangeRequest creationRequestForAssetFromImage:image]

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

相关内容

  • 没有找到相关文章

最新更新