Ответы пользователя по тегу Изображения
  • Эффект перевернутого изображения: почему переворачивается картинка на сайте?

    @max0ua
    Дело 100% в EXIF. Сегодня какраз столкнулся с аналогом фотография повернута на 90 градусов, в EXIF стоит Orientation 90 СW.

    При просмотре в теле страницы показывает перевернутой, а при "открыть картинку в новой вкладке" показывает картинку повернутой правильно. Т.е. современные браузеры когда показывают только картинку берут ее (в моем случае повернутую набок) смотрят на EXIF и поворачивают как надо.

    Сравните к примеру:
    filarmonia23.com/1.php
    <html>
    	<head>
    		<title>EXIF ORIENTATION TEST</title>
    	</head>
    	<body>
    		<img src="/image.jpg" />
    	</body>
    </html>

    и само фото filarmonia23.com/image.jpg (кстати в ИЕ 9 показывает нормально т.е. ему плевать на EXIF)

    Для проекта мы рассматривали 2 варианта решения:
    Первый вариант - при загрузке фото удалять все данные EXIF
    Второй вариант - при загрузке фото если есть данные EXIF - повернуть фото согласно данных.

    Остановились на 2-м варианте

    $img = new Imagick($uploaded_img);
    $orientation = $img->getImageOrientation();
    switch($orientation) { 
    		case imagick::ORIENTATION_BOTTOMRIGHT: 
    				$img->rotateimage("#000", 180); // rotate 180 degrees 
    		break; 
    		case imagick::ORIENTATION_RIGHTTOP: 
    				$img->rotateimage("#000", 90); // rotate 90 degrees CW 
    		break; 
    		case imagick::ORIENTATION_LEFTBOTTOM: 
    				$img->rotateimage("#000", -90); // rotate 90 degrees CCW 
    		break; 
    }
    $img->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
    $img->writeImage($uploaded_img);
    $img->clear();
    $img->destroy();


    Первый вариант был бы примерно так:
    $img = new Imagick($uploaded_img);
    $img->stripImage();
    $img->writeImage($uploaded_img);
    $img->clear();
    $img->destroy();


    Ну а дальше можно уже и пользователю позволить поворачивать фото и т.д. и т.п.

    php.net/manual/ru/book.imagick.php
    Ответ написан
    1 комментарий