2016-01-19 3 views
0

Наше веб-приложение получает файлы изображений из десятков разных сторонних источников. Бизнес-правила диктуют, что мы сохраняем исходные изображения в том виде, в каком они получены, без каких-либо манипуляций с изображениями. Мы обрабатываем изменения размера, водяные знаки, поворот и т. Д., Когда изображение запрашивается через выделенный веб-сервер для изображений с использованием ImageResizer. autorotate = true и copymetadata = true - значения по умолчанию на сервере изображений.ImageResizer и последствия удаления изображения Информация EXIF ​​

Один из сторонних источников обрабатывает вращение изображения сомнительно. Когда они изначально получают изображение, они оценивают данные ориентации EXIF ​​изображения, поворачивая изображение. Однако они сохраняют предварительно повернутую версию данных ориентации EXIF. Поэтому, когда изображение приходит к нам, оно вращается, но флаг ориентации EXIF ​​по-прежнему остается на изображении. Когда изображение запрашивается с нашего сервера изображений, флаг ориентации обрабатывается (через autorotate = true), при этом вновь созданное запрошенное изображение снова поворачивается (отображается неверно) и удаляются данные ориентации EXIF. Это приводит к несчастным пользователям.

Убедить третьих лиц в изменении способа обработки данных EXIF ​​не является вариантом.

Решение, которое мы планируем использовать для этих конкретных изображений, - это установить autorotate = false по запросу. Однако информация о ориентации EXIF ​​все равно будет присутствовать. Так как я не вижу параметр ImageResizer для удаления только данных ориентации EXIF ​​(кроме попадания в пространство имен System.Drawing, чего мы бы не хотели делать), мы рассматриваем возможность установки copymetadata = false для этих конкретных изображений.

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

ответ

0

ImageResizer не копирует метаданные или данные ориентации EXIF, если вы не сообщите об этом. Установка &autorotate=false на этих сломанных изображениях будет работать нормально.

Даже если вы используете CopyMetadata, это specifically excludes копирование данных ориентации и других конкретных битмапов. Вы видели сценарий, когда изображение, запрошенное с &autorotate=false, позже появилось, было повернуто в окне просмотра?

CopyMetadata в первую очередь полезен для копирования данных об авторских правах и gps. Он не обрабатывает метаданные XML или XMP и не копирует цветовые пространства. ImageResizer всегда выводит изображения sRGB, по умолчанию в Интернете - не требуется информация о цветовом пространстве.

+0

Спасибо, Nathanael. Я не понимал, что данные ориентации не будут копироваться, так что это хорошо, чтобы учиться. Мы не видели примеров поворота изображений - это было скорее превентивной мерой для предотвращения этого. Теперь мы знаем, что мы не должны беспокоиться. – Rich

Смежные вопросы