UIImagePickerController Ориентация изображения - PullRequest
3 голосов
/ 16 сентября 2010

Может кто-нибудь сказать мне, как использовать UIImagePickerController (камера и альбом), делегаты определяют ориентацию изображения, поворачивают его соответственно и назначают его для UIImageView?

Ответы [ 3 ]

14 голосов
/ 21 февраля 2011

Ответ Водханга частично неверен - современные камеры при съемке делают четкую ориентацию изображения. Это было распространено в течение более 5 лет.

Ранее я использовал код в этом ответе для поворота, считывая информацию об «ориентации» прямо с картинки:

Предварительный просмотр камеры UIImagePickerController в альбомной ориентации - портрет

2 голосов
/ 28 октября 2013
    // Use this UIImagePickerController's  delegate method
    - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {
        // Getting image user just has shoot
        UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];

        // Fixing to stick with only one orientation (UIImageOrientationUp in this case)
        switch (image.imageOrientation) {
            case UIImageOrientationDown:
            case UIImageOrientationDownMirrored:
            case UIImageOrientationLeft:
            case UIImageOrientationLeftMirrored:
            case UIImageOrientationRight:
            case UIImageOrientationRightMirrored:
                image = [UIImage imageWithCGImage:image.CGImage
                                                  scale:image.scale
                                            orientation:UIImageOrientationUp]; // change this if you need another orientation
                break;
            case UIImageOrientationUp:
            case UIImageOrientationUpMirrored:
                // The image is already in correct orientation
                break;
        }

        // Do whatever you want with image (likely pass it to some UIImageView to display)
        UIImageView *imgView = [[UIImageView alloc] initWithImage:image];

        // Dismiss UIImagePickerController
        [picker dismissModalViewControllerAnimated:NO];
    }

Примечание: UIImageView читает свойство imageOrientation и отображает UIImage соответственно.

0 голосов
/ 16 сентября 2010

Нет, UIImagePickerController не может сделать это явно.

Если вы хотите определить на основе содержимого изображения.Это довольно сложная проблема.Как вы можете определить ориентацию изображения, не понимая содержания внутри него?

Я могу предложить вам трюк, чтобы вы изучили ширину и длину возвращаемого изображения и посмотрели, портрет это или пейзаж.Для поворота изображения есть несколько библиотек и кодов снаружи, но я не особо их пробовал.Вы можете взглянуть на этот блог

...