Запись метаданных изображения (EXIF / TIFF / IPTC) в файл изображения в OS X

Я создаю приложение для редактирования фотографий, и до сих пор мне удалось успешно прочитать метаданные из файлов изображений (после получения ответа на этот вопрос:Чтение данных камеры из EXIF при открытии NSImage на OS X).

source = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *props = (__bridge_transfer NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);

Это копирует все метаданные файла изображения в словарь, и это работает очень хорошо. Тем не менее, я не мог узнать, как записать эти метаданные обратно во вновь созданныйNSImage (или в файл изображения). Вот как я могу сохранить свой файл (гдеimg это экземпляр NSImageбез метаданные иself.cachedMetadata читается ли словарь из исходного изображения):

NSBitmapImageRep *rep = [NSBitmapImageRep imageRepWithData:[img TIFFRepresentation]];
[rep setProperty:NSImageEXIFData withValue:self.cachedMetadata];
NSData *data;
if([[fileName lowercaseString] rangeOfString:@".png"].location != NSNotFound){
    data = [rep representationUsingType:NSPNGFileType properties:nil];
}else if([[fileName lowercaseString] rangeOfString:@".tif"].location != NSNotFound){
    data = [rep representationUsingType:NSTIFFFileType properties:nil];
}else{ //assume jpeg
    data = [rep representationUsingType:NSJPEGFileType properties:@{NSImageCompressionFactor: [NSNumber numberWithFloat:1], NSImageEXIFData: self.cachedMetadata}];
}

[data writeToFile:fileName atomically:YES];

Как я могу написать метаданные? Раньше я успешно писал только EXIF для JPEG (словарь ранее был только EXIF), но поскольку в EXIF отсутствовали некоторые поля, которые были в исходных изображениях (теги IPTC и TIFF), мне нужно было изменить метод чтения. Теперь у меня есть все данные, но я не знаю, как записать их во вновь созданный файл изображения.

Спасибо, может.

Ответы на вопрос(2)

Ваш ответ на вопрос