Подтвердить что ты не робот

Загрузка изображения Safari iOS 6 - Ориентация неправильная

Я создал веб-приложение, которое позволяет загружать фотографию из браузера. При использовании этого в iOS 6 фотографии, похоже, заканчиваются в альбомной ориентации, даже если они были сделаны в портрете при загрузке. Должен ли я делать проверки на стороне сервера, чтобы получить изображение в правильном направлении или есть какие-то специфические атрибуты iOS для iOS, которые я могу применить к форме загрузки, чтобы исправить это?

Обновление

В соответствии с запросом, здесь код, который я написал для этого. Предварительные требования заключаются в том, что я использую PHP и библиотеку WideImage (это фрагмент из более крупного script, чтобы вы могли использовать что-то другое для обработки изображений, если хотите).

// Load Image Into Wide Image
$image=WideImage::load(IMG_UPLOAD_DIR.$result['name']);
$exif=exif_read_data(IMG_UPLOAD_DIR.$result['name']);
$orientation=$exif['Orientation'];
$result['orientation']=$orientation;

// Use Wide Image To Resize Images
$full=$image->resize(IMG_FULL_H,IMG_FULL_H);
$thumb=$image->resize(IMG_THUMB_W,IMG_THUMB_H);

switch($orientation){
    case 2:
        $full->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 3:
        $full->rotate(-180)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(-180)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 4:
        $full->rotate(180)->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(180)->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 5:
        $full->rotate(90)->mirror()->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(90)->mirror()->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 6:
        $full->rotate(90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 7:
        $full->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    case 8:
        $full->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->rotate(-90)->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;

    default:
        $full->saveToFile(IMG_UPLOAD_DIR.$result['name'], 90);
        $thumb->saveToFile(IMG_UPLOAD_DIR.$thumbName, 90);
        break;
}
4b9b3361

Ответ 1

Проверьте изображения exif метаданных, камера iPhone отобразит "повернутые" изображения.

Ответ 3

Как расширение ответа A-Live:

Если вы используете ruby, RMagick имеет метод auto_orient. Из документации:

Поворачивает или переворачивает изображение на основе метки изображения EXIF. Обратите внимание, что только некоторые модели современных цифровых камер могут помечать изображение с ориентацией. Если изображение не имеет метки ориентации, или изображение уже правильно ориентировано, тогда auto_orient возвращает точная копия изображения.

Ответ 4

Стоит отметить, что запуск изображения через Cloudinary сортирует это.

До маршрутизации через эту услугу фотографии, которые я сделал с моим iPhone, будут отображаться как повернутые (казалось бы, без причины) только на рабочем столе.

Однажды за URL-адресом Cloudinary с любой функцией преобразования изображения изображение возвращается в правильной ориентации.

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