将表示图像的 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?
NSMutableData 到 UnsafeMutableRawPointer 的字节不更新 mutableData 的值