Замените тег exif-ориентации JPEG, используя обычный PHP - PullRequest
0 голосов
/ 11 марта 2020

В веб-приложении изображения автоматически поворачиваются с помощью GD (https://www.php.net/manual/en/intro.image.php) во время загрузки из-за их ориентации exif. Поскольку при работе с изображениями с помощью GD все метаданные теряются, я использовал эту функцию (https://www.php.net/manual/de/function.iptcembed.php#113877) для копирования метаданных (exif и ipt c) из исходного изображения в повернутое.

Пока все работает ...

Но теперь я хочу заменить тег exif-ориентации в повернутом изображении на 1 (https://www.impulseadventure.com/photo/exif-orientation.html), чтобы избежать дальнейшего вращения изображения в других приложениях. В поиске Google я нашел этот код для обмена тегом ориентации exif во время процесса копирования:

$exif_data = str_replace( chr( dechex( $original_orientation ) ) , chr( 0x1 ), $exif_data );

(https://gist.github.com/n7studios/6a764d46bc1d515ba406#file -fix-image-direction-- php -L140 )

Но этот код нарушает exif-часть заголовка, поскольку он заменяет все вхождения $ original_orientation во всем exif-заголовке. В основном мне нравится подход поиска и замены, но я хочу применить его, не нарушая метаданные exif.

Как мне построить код str_replace, чтобы заменить только значение тега ориентации exif?

Видите ли вы другой подход, чтобы решить мою проблему, заменить тег ориентации EXIF? (Требуется использовать чистый код php и не использовать сторонние расширения / библиотеки)

Заранее благодарим за помощь!

...