我在PHContentEditingOutput提供的url上创建了一个图像。当我将数据加载到UIImage并像这样保存它时,它就能工作了。
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
NSData *data = [NSData dataWithContentsOfURL:contentEditingOutput.renderedContentURL]
UIImage *image = [UIImage imageWithData:data];
[PHAssetChangeRequest creationRequestForAssetFromImage:image];
} completionHandler:^(BOOL success, NSError *error) {
...
}];但是当我尝试使用url时,它失败了:
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:contentEditingOutput.renderedContentURL];
} completionHandler:^(BOOL success, NSError *error) {
...
}];错误:
错误Domain=NSCocoaErrorDomain代码=-1“操作无法完成。(可可错误-1。)
更新:
当我试图保存一个修改时,同样的错误。
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *request = [PHAssetChangeRequest changeRequestForAsset:asset];
request.contentEditingOutput = contentEditingOutput;
} completionHandler:^(BOOL success, NSError *error) {
...
}];该方法适用于视频(creationRequestForAssetFromVideoAtFileURL:),但不适用于图像。哪里出了问题?
发布于 2015-02-06 09:15:09
问题在于文件格式。我试着编辑PNG截图,但renderingContentURL一直都是renderingContentURL。起初,我认为这是一个错误,但根据文献资料的说法,这是正确的行为。
renderedContentURL
阅读此属性以找到用于写入已编辑的资产内容的URL。然后,如果编辑照片资产,将修改后的照片图像写入JPEG格式的文件中。如果编辑视频资产,则将视频导出到QuickTime (.mov)文件中。
解决方案是用函数转换图像。
NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality);发布于 2018-12-21 20:13:59
在传递元数据时,每当定向(在图像元数据中)不是CGImagePropertyOrientationUp时,我也会一致地显示这个问题。
在renderedContentURL文档中也说明了这一点:
编辑后的资产内容必须包含(或“烘焙”)资产的预期方向。也就是说,您在输出图像或视频文件中写入的定向元数据(如果有的话)必须声明“向上”方向,而在没有方位元数据的情况下,图像或视频数据必须向上显示。
对于图像,需要更新以下元数据键(同时图像数据也是旋转的):
·kCGImagePropertyTIFFDictionary \ kCGImagePropertyTIFFOrientation
·kCGImagePropertyOrientation
·有可能,kCGImagePropertyIPTCImageOrientation
https://stackoverflow.com/questions/28348450
复制相似问题