我的要求是在元数据中设置图像的描述,并将图像保存在文档目录中。
如果我将图像保存到照片库,但我想将图像保存在文档目录中,我发现如何创建元数据和元数据。
请建议如何将元数据添加到我的图像并将图像保存在目录中。
我的代码:
NSMutableDictionary *tiffMetadata = [[NSMutableDictionary alloc] init];
[tiffMetadata setObject:@"This is my description" forKey:(NSString*)kCGImagePropertyTIFFImageDescription];
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
[metadata setObject:tiffMetadata forKey:(NSString*)kCGImagePropertyTIFFDictionary];
ALAssetsLibrary *assetsLib = [[ALAssetsLibrary alloc] init];
NSData *imgData=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"IMG_0015" ofType:@"jpg"]];
[assetsLib writeImageDataToSavedPhotosAlbum:imgData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"%@",error.localizedDescription);
}
}];
任何建议都将受到高度赞赏。 提前谢谢。
答案 0 :(得分:1)
许多应用程序将使用ALAssets,然后使用完成块中生成的URL执行其他操作。如果这不合适,您需要更加手动地写入数据。 libexif.sourceforge.net/docs.html可能对此有所帮助,以及以下两个SO问题:
How to write exif metadata to an image (not the camera roll, just a UIImage or JPEG)
从CGImageSourceRef到具有元数据的CGImageDestinationRef的步骤。
答案 1 :(得分:0)
尝试使用以下代码:
NSMutableDictionary *tiffMetadata = [[NSMutableDictionary alloc] init];
[tiffMetadata setObject:@"This is my description" forKey:(NSString*)kCGImagePropertyTIFFImageDescription];
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
[metadata setObject:tiffMetadata forKey:(NSString*)kCGImagePropertyTIFFDictionary];
ALAssetsLibrary *assetsLib = [[ALAssetsLibrary alloc] init];
NSData *imgData=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"IMG_0015" ofType:@"jpg"]];
[assetsLib writeImageDataToSavedPhotosAlbum:imgData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {
if(error == nil)
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirPath = [array objectAtIndex:0];
NSURL *destURL = [[NSURL alloc]initFileURLWithPath:docDirPath];
[fileManager copyItemAtURL:assetURL toURL:destURL error:nil];
}
else {
NSLog(@"%@",error.localizedDescription);
}
}];