我可以将
Photo Sphere XMP Metadata添加到equirectangular照片.
我将带有XMP元数据的照片上传到Google相册,Google照片可以被识别为球形照片.
然后,我尝试将带有XMP元数据的照片保存到相机胶卷.
我通过相机胶卷将照片分享给Google相册,但Google相册并不知道这是一张球形照片.
我试图下载照片并对其进行分析,发现XMP元数据全部消失了.
当照片保存到相机胶卷时,iOS似乎会编辑元数据.
有没有办法保存照片的XMP元数据,同时将其保存到相机胶卷?
我将带有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);
解决方法
关键点:使用
[PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL: url]
代替
[PHAssetChangeRequest creationRequestForAssetFromImage:image]
因为UIImage会破坏原始文件,只需使用临时URL保存原始图像原始数据,并使用creationRequestForAssetFromImageAtFileURL api.