2013-02-28 88 views
0

我试图用一些自定义元数据将图像保存到相册中。我想要保存的自定义元数据应该是NSDictionary的形式。到现在为止我已经使用类似下面只是成功地将一个NSArray到图像元数据:将NSDictionary添加到图像元数据

NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init]; 
[metadata setObject:@[@"ele1", @"ele2"] forKey:(NSString*)kCGImagePropertyIPTCKeywords]; 
NSMutableDictionary *meta = [[NSMutableDictionary alloc] init]; 
[meta setObject:metadata forKey:(NSString*)kCGImagePropertyIPTCDictionary]; 
// pass the meta dictionary into writeImageDataToSavedPhotosAlbum 

但我想是要通过字典进入的setObject。 是否有人成功地将自定义元数据插入到元数据是NSDIctionary的图像中?

我使用,我发现这里Save CUSTOM metadata in an image taken from AVFoundation in iOS代码,添加一个词典图像元数据,但仍没有运气的附加信息。原始文件位于临时目录中,最终文件通过writeImageDataToSavedPhotosAlbum创建。就像在链接中一样,生成的图像不包含字典。任何想法?

CGImageSourceRef source = CGImageSourceCreateWithData((CFMutableDataRef)data, NULL); 
NSDictionary *metadata = [(NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL)autorelease]; 
NSMutableDictionary *metadataAsMutable = [metadata mutableCopy]; 
NSMutableDictionary *RAWDictionary = [[metadataAsMutable objectForKey:(NSString *)kCGImagePropertyRawDictionary]mutableCopy]; 

if(!RAWDictionary) { 
    RAWDictionary = [NSMutableDictionary dictionary]; 
} 

[RAWDictionary setValue:@"value1" forKey:@"key1"]; 
[RAWDictionary setValue:@"value2" forKey:@"key2"]; 

[metadataAsMutable setObject:RAWDictionary forKey:(NSString *)kCGImagePropertyRawDictionary]; 

NSMutableData *newData = [NSMutableData data]; 

CFStringRef UTI = CGImageSourceGetType(source); 
CGImageDestinationRef destination = CGImageDestinationCreateWithData((CFMutableDataRef)newData, UTI, 1, NULL); 

if(!destination) { 
    NSLog(@"***Could not create image destination ***"); 
} 

CGImageDestinationAddImageFromSource(destination,source,0, (CFDictionaryRef)metadataAsMutable); 
BOOL success = NO; 
success = CGImageDestinationFinalize(destination); 

if(!success) { 
    NSLog(@"***Could not create data from image destination ***"); 
} 

回答

0

试试这个:

//covert image to nsdata format 
NSData *imageData = [[NSData alloc]initWithContentsOfFile:@"your image path"]; 
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init]; 
[metadata setObject:imageData forKey:@"imageData"]; 
+0

Thanks..but没有奏效。我在原来的问题中增加了一些额外的信息。 – Glauco 2013-02-28 05:17:10

+0

@Glauco什么意思没有奏效?你可以尝试存档你的数据?就像NSData * data = [NSKeyeArchiver archivedDataWithRootObject:“your data”]; – Allan 2013-02-28 15:49:16

+0

我的想法是将元数据添加到图像中。合并的图像然后通过ALAssetLibrary存储到相册中。然后,稍后,ALAssetLibrary检索相册中的图像。在这一点上,我想检索存储在开头的自定义元数据。我不确定NSKeyeArchiver如何帮助我。你有一个例子吗?还是可以提供更多信息? – Glauco 2013-02-28 18:47:30