ImageResizer и последствия удаления информации EXIF изображения
Наше веб-приложение получает файлы изображений из десятков различных сторонних источников. Бизнес-правила требуют, чтобы мы сохраняли исходные изображения как полученные, без каких-либо манипуляций с изображениями. Мы обрабатываем изменение размера, нанесение водяных знаков, вращение и т. Д., Когда изображение запрашивается через выделенный веб-сервер для изображений с помощью ImageResizer. autorotate = true и copymetadata = true являются значениями по умолчанию на сервере изображений.
Один из сторонних источников подвергает сомнению поворот изображения. Когда они первоначально получают изображение, они обрабатывают данные ориентации EXIF изображения, поворачивая изображение. Однако они сохраняют предварительно повернутую версию данных об ориентации EXIF. Поэтому, когда изображение приходит к нам, оно поворачивается, но флаг ориентации EXIF все еще остается на изображении. Когда изображение запрашивается с нашего сервера изображений, обрабатывается флаг ориентации (через autorotate=true), результирующее запрашиваемое изображение снова поворачивается (отображается неправильно), а данные ориентации EXIF удаляются. Это приводит к несчастным пользователям.
Убедить третье лицо изменить способ обработки данных EXIF не вариант.
Решением, которое мы планируем использовать для этих конкретных изображений, является установка autorotate = false по запросу. Однако информация об ориентации EXIF все еще будет там. Поскольку я не вижу опции ImageResizer для удаления только данных об ориентации EXIF (кроме попадания в пространство имен System.Drawing, которое мы бы не хотели делать), мы рассматриваем установку copymetadata=false для этих конкретных изображений.
Каковы недостатки веб-сервера, предоставляющего изображения без метаданных? В частности, в отношении цветового пространства / профилей? Эти изображения в конечном итоге копируются и используются на других сайтах.
1 ответ
ImageResizer не копирует какие-либо метаданные или данные ориентации EXIF, если вы не сообщите об этом. настройка &autorotate=false
на этих разбитых изображениях будет работать нормально.
Даже если вы используете CopyMetadata, это, в частности, исключает копирование данных об ориентации и других растровых чисел. Вы видели сценарий, где изображение запрашивается с &autorotate=false
позже появился еще повернутый в зрителя?
CopyMetadata в первую очередь полезна для копирования данных об авторских правах и GPS. Он не обрабатывает метаданные XML или XMP и не копирует цветовые пространства - ImageResizer всегда выводит изображения sRGB, по умолчанию в Интернете - информация о цветовом пространстве не требуется.