UIImage imageOrientation возвращает 0 - PullRequest
2 голосов
/ 21 ноября 2011

Я разрабатываю приложение для iPhone в iOS 5. Я использую UIImagePickerController, чтобы позволить пользователю выбрать изображение, и мне нужно знать его ориентацию.

У меня есть следующий код для метода UIImagePickerControllerDelegate, когда изображение было выбрано:

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    UIImage *originalImage = nil;
    UIImage *editedImage = nil;

    // Handle a still image picked from a photo album
    if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeImage, 0) 
        == kCFCompareEqualTo) {

        editedImage = (UIImage *)[info objectForKey:UIImagePickerControllerEditedImage];
        originalImage = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];

        NSLog(@"editedImage.imageOrientation = %d", editedImage.imageOrientation);
        NSLog(@"originalImage.imageOrientation = %d", originalImage.imageOrientation);

        imageToUse = nil;
        if (editedImage)
            imageToUse = editedImage;
        else 
            imageToUse = originalImage;

    }
}

Кто-нибудь знает, почему значения imageOrientation в инструкциях NSLog всегда равны 0? Я пробовал с пейзажными и портретными изображениями, и результат всегда один и тот же.

Выбранное изображение не равно nil, так как я показываю его в UIImageView без проблем.

Спасибо.

1 Ответ

1 голос
/ 21 ноября 2011

Ориентация изображения: , а не . Указывает, является ли изображение в книжной или альбомной ориентации.

Ориентация определяет, как данные изображения эффективно преобразуются / поворачиваются перед отображением.,Как правило, например, формат данных изображения, полученного камерой, является идентичным, независимо от ориентации камеры в данный момент.То есть изображение, полученное в портретной форме, может отображаться как повернутое ландшафтное изображение в его «сыром» виде (это, конечно, зависит от камеры).

Чтобы преодолеть это, метаданные изображения обновляются с помощьюинформация об ориентации камеры при съемке изображения.Вооружившись этой информацией, UIUmage может отображать изображение в правильном направлении, поворачивая его в соответствии с этими метаданными.

Чтобы выяснить, является ли изображение портретным или альбомным в окончательном формате, просто сравнитеширина в высоту:)

Тим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...