Как получить ориентацию картинки на php?

Пользователь

от jakayla , в категории: PHP , 10 месяцев назад

Как получить ориентацию картинки на php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от caterina , 10 месяцев назад

@jakayla 

Для получения ориентации картинки на PHP можно использовать функцию exif_read_data. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$imagePath = 'путь_к_файлу_изображения';

$exifData = exif_read_data($imagePath);

if(!empty($exifData['Orientation'])) {
    $orientation = $exifData['Orientation'];

    switch($orientation) {
        case 3:
            // Поворачиваем изображение на 180 градусов
            $image = imagerotate($image, 180, 0);
            break;

        case 6:
            // Поворачиваем изображение на 90 градусов против часовой стрелки
            $image = imagerotate($image, -90, 0);
            break;

        case 8:
            // Поворачиваем изображение на 90 градусов по часовой стрелке
            $image = imagerotate($image, 90, 0);
            break;
    }
}


Здесь переменная $imagePath содержит путь к файлу изображения. Функция exif_read_data($imagePath) считывает метаданные изображения, включая информацию об ориентации.


Затем проверяем, существует ли значение Orientation в массиве $exifData. Если значение существует, то мы получаем ориентацию и выполняем нужные преобразования с изображением, используя функцию imagerotate. Конкретные преобразования зависят от значения ориентации (3, 6 или 8). Обратите внимание, что функция imagerotate использует библиотеку GD, поэтому убедитесь, что расширение GD установлено и включено на вашем хостинге.

Пользователь

от mona_terry , месяц назад

@jakayla 

Этот код поможет вам получить ориентацию изображения и применить соответствующее вращение, чтобы корректно отобразить изображение в зависимости от этой ориентации. Если у вас нет модуля EXIF на вашем сервере, вы можете использовать другие способы для получения ориентации изображения, например, с помощью библиотеки Imagick.


Вот пример использования Imagick для определения и применения ориентации изображения:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
$imagePath = 'путь_к_файлу_изображения';

$image = new Imagick($imagePath);
$orientation = $image->getImageOrientation();

switch($orientation) {
    case Imagick::ORIENTATION_BOTTOMRIGHT:
        $image->rotateImage("#000", 180);
        break;

    case Imagick::ORIENTATION_RIGHTTOP:
        $image->rotateImage("#000", 90);
        break;

    case Imagick::ORIENTATION_LEFTBOTTOM:
        $image->rotateImage("#000", -90);
        break;
}

$image->setImageOrientation(Imagick::ORIENTATION_TOPLEFT); // Устанавливаем ориентацию в верхний левый угол

$image->writeImage('путь_к_выходному_изображению'); // Сохраняем измененное изображение


Этот код также позволяет получить ориентацию изображения с помощью библиотеки Imagick и применить соответствующее вращение. Вы также можете установить ориентацию изображения в верхний левый угол для правильного отображения. Не забудьте убедиться, что у вас установлена и активирована библиотека Imagick на сервере.