Как сохранить фотографию с EXIF ​​(GPS) И ориентацией на iPhone? - PullRequest
13 голосов
/ 15 июля 2011

Я использую writeImageToSavedPhotosAlbum: метаданные: завершениеБлок: для сохранения изображений в кадре камеры (данные GPS в словаре передаются в метаданные).Однако изображения дезориентированы (поскольку я переворачиваю устройство во время съемки).

Есть еще одна функция writeImageToSavedPhotosAlbum: ориентация: завершение блока: но я не смогу передавать данные EXIF.

Согласно документации, есть свойство kCGImagePropertyOrientation для установки ориентации.вручную, но у меня возникают проблемы с определением текущей ориентации устройства во время съемки и сохранения его.

Кто-нибудь достиг сохранения изображения с данными EXIF ​​и правильной ориентацией?Любая помощь будет принята с благодарностью.

Вот мой код:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [self dismissModalViewControllerAnimated:YES];
    [imageView setImage:image];

    if(sourceCamera) {
        //EXIF and GPS metadata dictionary
        (...)

        //saving image
        ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init];       
        [al writeImageToSavedPhotosAlbum:[image CGImage]
                                metadata:dict
                         completionBlock:^(NSURL *assetURL, NSError *error) {
                             if (error == nil) {
                                NSLog(@"saved");
                             } else {
                                 NSLog(@"error");
                             }
        }];        
        [al release];
    }
}

С наилучшими пожеланиями,

a.

1 Ответ

27 голосов
/ 15 июля 2011

Вам нужно отобразить значения UIImageOrientation на соответствующие значения ориентации EXIF ​​при установке kCGImagePropertyOrientation.Это отображение:

UIImageOrientationUp:             1
UIImageOrientationDown:           3
UIImageOrientationLeft:           8
UIImageOrientationRight:          6
UIImageOrientationUpMirrored:     2
UIImageOrientationDownMirrored:   4
UIImageOrientationLeftMirrored:   5
UIImageOrientationRightMirrored:  7

Обратите внимание, что UIImageOrientationLeft и UIImageOrientationRight являются противоположностью того, что вы можете ожидать от документации ;маленькие примеры изображений - это то, что вы получите, если применить ориентацию к вертикальному изображению, а не ориентацию необработанных данных изображения, которая даст вертикальное изображение при применении ориентации.

...