Обновление iOS UIImage в памяти с информацией EXIF ​​/ geotag - PullRequest
4 голосов
/ 29 января 2012

Я пытаюсь обновить UIImage информацией о геотегах.Я посмотрел на Сохранение информации Geotag с фотографией на iOS4.1 , где я нашел ссылку на NSMutableDDictionary + ImageMetadata .Однако я не хочу сохранять в фотоальбоме, но должен передать UIImage.

Следующий код, похоже, создавал слишком много копий изображения и требовал, чтобы все эти рамки были связаны: CoreImage, AssetsLibrary, CoreMedia, ImageIO.

Есть ли что-то более эффективное, чем UIImage -> CIImage -> CGImage -> UIImage, которое может принимать свойства NSDictionary, необходимые для установки данных EXIF?

- (UIImage *)updateImage:(UIImage *)image location:(CLLocation *)location dateOriginal:(NSDate *)dateOriginal
{
    NSMutableDictionary *properties = [NSMutableDictionary dictionaryWithDictionary:[image.CIImage properties]];

    // uses https://github.com/gpambrozio/GusUtils   
    [properties setLocation:location];
    [properties setDateOriginal:dateOriginal];

    CIImage *tempImage = [[CIImage alloc] initWithImage:image options:properties];
    CIContext *context = [CIContext contextWithOptions:nil];    
    UIImage *updatedImage = [UIImage imageWithCGImage:[context createCGImage:tempImage fromRect:tempImage.extent]];

    return updatedImage;
}

1 Ответ

0 голосов
/ 29 января 2012

Посмотрите на libexif: http://libexif.sourceforge.net/

Возможно, вам понадобится передать байтовые данные изображения в библиотеку, используя

UIImageJPEGRepresentation(image, quality) bytes]
...