将表示图像的 NSMutableData 保存到 iPhone 照片库

Posted

技术标签:

【中文标题】将表示图像的 NSMutableData 保存到 iPhone 照片库【英文标题】:Save NSMutableData representing an image to the iPhone photo library 【发布时间】:2011-09-03 00:16:55 【问题描述】:

我有一个 NSMutableData,其中包含我想保存在设备库中的 JPEG。

我可以将它转换为 UIImage,但是它会丢失 EXIF 数据,所以应该避免 UIImaes。

编辑反映我想要完成的工作

我正在使用iphone-exif library 来编辑我的主包中图片的元数据。我想将生成的图像保存在照片库中

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"P1080330" ofType:@"JPG"];  
NSData *uiJpeg = [NSData dataWithContentsOfFile:filePath];  
EXFJpeg* jpegScanner = [[EXFJpeg alloc] init];
[jpegScanner scanImageData: uiJpeg];
NSLog(@" EXIF_Make   %@ ", [ jpegScanner.exifMetaData tagValue: [NSNumber numberWithInt:EXIF_Make]]); // OUTPUTS PANASONIC

// Change camera maker to FairyGodmother
[jpegScanner.exifMetaData addTagValue: @"FairyGodmother" forKey:[NSNumber numberWithInt:EXIF_Make]];

NSMutableData *newImageData = [[NSMutableData alloc] init];
[jpegScanner populateImageData:newImageData];

// NOW I HAVE THE NSMUTABLEDATA CONTAINGING MY IMAGE WITH ALL MY EXIF DATA. HOW DO I PUT IT TO THE PHOTO LIBRARY?

【问题讨论】:

【参考方案1】:

据我所知,UIImageWriteToSavedPhotosAlbum(它采用 UIImage)是在设备的照片库中获取图像的唯一记录路径。

您对“丢失 EXIF 数据”有什么顾虑?你说的是方向吗? (UIImage 应该会为您处理这些问题。)还是其他 EXIF 数据?

从照片库中获取图像的唯一方法也是作为 UIImage,因此我不确定将原始 JPEG 流推入库中会获得什么。

【讨论】:

我说的是 Jpeg 可以包含的所有 EXIF 数据:方向、位置数据、曝光时间、使用的软件、版权......看起来 UIImage 剥离了所有这些数据,这就是为什么我想避免使用它。根据你的说法,这是不可能的:\【参考方案2】:

要写入文件,请使用:

[yourImage writeToFile:filePath atomically:YES];

[]的

【讨论】:

除非你可以直接写入ios照片库的沙箱,否则这是行不通的。

以上是关于将表示图像的 NSMutableData 保存到 iPhone 照片库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“imageWithData”保存和检索UIImages保持正确的图像格式?

如何将NSString直接分配给NSMutableData?

如何在ios中将图像上传到服务器?

NSMutableData 到 UnsafeMutableRawPointer 的字节不更新 mutableData 的值

如何检索照片库路径?

将 mp3 数据保存在 iPhone 上的文件中