Изображение поворачивается на 90 градусов при отображении (изображение, снятое смартфоном)

Привет, я работаю над сайтом php, где пользователь может использовать PHP для загрузки изображения, а затем система отобразит изображение с измененным размером (до меньшего размера). Коды изменения размера следующие:

<?php 
ini_set('memory_limit', -1); 
ini_set('max_execution_time', 40000); 
require_once 'ThumbLib.inc.php';                                                                          
$fileName = (isset($_GET['file'])) ? urldecode($_GET['file']) : null;
$thumb = PhpThumbFactory::create($fileName);
$thumb->Resize($_GET['width'], $_GET['height']);
$thumb->show();
?>

где html коды

<img src = "show_image.php?width=230&height=1000000&file=appsub/<?php echo $v["xfile"]; ?>">

Нет ничего плохого в том, что пользователь загружает изображение через ПК, но когда пользователь делает снимок с помощью смартфона (например, iPhone), иногда отображаемое изображение будет повернуто на 90 градусов.

Как я могу исправить проблему?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
650
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Фотография может иметь данные «ориентации», чтобы вы могли повернуть ее обратно в нормальное положение, если хотите. Вы можете использовать следующие коды сразу после того, как пользователь загрузил изображение:

Обратите внимание, что на вашем сервере должен быть установлен Imagick. (большинство новых серверов имеют)

<?php
function autoRotateImage($image) {

    $orientation = $image->getImageOrientation();

    switch($orientation) {
        case imagick::ORIENTATION_BOTTOMRIGHT:
            $image->rotateimage("#000", 180); // rotate 180 degrees
        break;

        case imagick::ORIENTATION_RIGHTTOP:
            $image->rotateimage("#000", 90); // rotate 90 degrees CW
        break;

        case imagick::ORIENTATION_LEFTBOTTOM:
            $image->rotateimage("#000", -90); // rotate 90 degrees CCW
        break;

    }
    // Now that it's auto-rotated, make sure the EXIF data is correct in case the EXIF gets saved with the image!

    $image->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
}
?> 

 

<?php

$image = new Imagick('./sourcepath/'.$upload1);
autoRotateImage($image);

// - Do other stuff to the image here -

$image->writeImage('./destinationpath/'. $upload1);
?>
Ответ принят как подходящий

если вы не сохраняете повернутое изображение, вы можете использовать следующее для его отображения (после поворота)

<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, );

// Output
imagejpeg($rotate);

// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>

Другие вопросы по теме