В веб-приложении изображения автоматически поворачиваются с помощью 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 и не использовать сторонние расширения / библиотеки)
Заранее благодарим за помощь!