0

カスタムメタデータを含む画像をフォトアルバムに保存しようとしています。保存したいカスタムメタデータは、NSDictionaryの形式である必要があります。これまで、次のような方法を使用して、NSArrayを画像メタデータに挿入することに成功しました。

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である画像にカスタムメタデータを挿入することに成功した人はいますか?

追加情報

ここで見つけたコードを使用して、iOSのAVFoundationから取得した画像にCUSTOMメタデータを保存し、画像メタデータに辞書を追加していますが、それでもうまくいきません。元のファイルは一時ディレクトリにあり、最終ファイルは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 ***");
}
4

1 に答える 1

0

これを試して :

//covert image to nsdata format
NSData *imageData = [[NSData alloc]initWithContentsOfFile:@"your image path"];
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
[metadata setObject:imageData forKey:@"imageData"];
于 2013-02-28T02:14:07.830 に答える