2009-09-28 3 views
0

Ссылка или код будут очень благодарны!Гео-пометка фотографии на iPhone?

У меня есть приложение, которое позволяет пользователям делать фотографии. Вот код, который я использую для создания файла jpeg.

Как добавить геотег к данным EXIF ​​фотографии, если информация о параметре имеет значение lat и lon?

- (void) saveImage:(NSDictionary*) info { 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    NSString *filePath = [self applicationDocumentsDirectory] 
    stringByAppendingString: @"/photos/"]; 
    [fileManager createDirectoryAtPath: filePath withIntermediateDirectories: NO attributes: nil error: nil]; 

    filePath = [filePath stringByAppendingString: [info objectForKey: @"title"]]; 
    filePath = [filePath stringByAppendingString: @".jpg"]; 
    [fileManager createFileAtPath:filePath contents:nil attributes:nil]; 
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 

    NSData * imgData = [[NSData alloc] initWithData: 
    UIImageJPEGRepresentation([info objectForKey: @"image"],.8)]; 

    [fileHandle writeData:imgData]; 
    [fileHandle closeFile]; 
    [imgData release]; 

} 
+0

ли не камера iPhone сделать это для вас? Все мои фотографии поступают в Flickr с данными о местоположении, которые уже заполнены ... – ceejayoz

+0

Возможно, вы пытаетесь сделать это с фотографиями, снятыми на iPhone (фотографии в библиотеке)? –

ответ

2

iPhone фотографии автоматически геотегами в JPEG EXIF ​​

1

iPhone в настоящее время не предлагают библиотеку ImageIO, которые могут быть использованы для этого на Mac. Взгляните на проект iphone-exif, он может предоставить то, что вам нужно.

Кроме того, несколько примечаний о вашем коде, если можно.

  • NSString имеет many path methods, который следует использовать, чтобы сделать ваше намерение более понятным при обращении с дорожками.
  • UIImageJPEG Представление уже возвращает экземпляр NSData с автореализацией. Это обычная ошибка для новичков, но вы теряете код и добавляете дополнительную работу по управлению памятью, создавая новый экземпляр NSData со старым.
  • NSData имеет способ -writeToFile: options: error: это позволит вам избавиться от всего этого дополнительного кода NSFileHandle. Я думаю, это также избавит вас от необходимости создавать файл с NSFileManager.
  • В качестве альтернативы, вы можете передать данные из UIImageJPEGRepresentation в параметр содержимого - [NSFileManager createFileAtPath: содержание: атрибуты:]
Смежные вопросы