ImageResizer - вывод изображений с измененным размером со встроенными профилями ICC
Я играю с ImageResizer уже неделю или около того, и мне интересно, можно ли выводить изображения с измененным размером с тем же встроенным профилем ICC (и в том же цветовом пространстве), что и исходное изображение, например, цветовое пространство Adobe 1998?
Я намереваюсь использовать ImageResizer как часть рабочего процесса моей компании для наведения большого пальца на наши исходные изображения, прежде чем наш отдел обработки изображений проверяет их на согласованность, поэтому тот же цветовой профиль имеет важное значение. Скорость генерации не слишком важна, так как они будут кэшироваться после генерации.
Может кто-нибудь сказать мне, если ImageResizer способен на это и какие части конвейера мне нужно будет перегружать, чтобы достичь этого?
Благодарю.
1 ответ
ImageResizer ориентируется на Интернет, всегда создает изображения в цветовом пространстве sRGB; браузеры не поддерживают профили ICC, поэтому мы их не используем.
Тем не менее, вы можете изменить несколько строк и получить желаемый результат.
ImageResizer имеет 3 конвейера - GDI+ (по умолчанию), FreeImage и WIC.
- GDI + не поддерживает выходные профили - по крайней мере, не через System.Drawing.
- Предполагается, что FreeImage имеет очень хорошую поддержку профиля ICC
- WIC также должен иметь поддержку профилей ICC, но, скорее всего, он сообщит об ошибках в GDI+, поскольку оба используют одни и те же кодеки.
Чтобы внести изменения, перейдите в репозиторий ImageResizer и нажмите кнопку "форк".
Когда вы клонируете свой форк, убедитесь, что вы переключаетесь в ветку разработки, прежде чем вносить изменения, иначе ваши изменения не будут совместимы со следующей основной версией.
Возможно, вы захотите изменить плагины / FreeImage / FreeImageEncoder.cs. Документация FreeImage находится в формате pdf (ура!), Так что вы, вероятно, захотите отсканировать это быстро, чтобы понять, как он обрабатывает профили.
При тестировании убедитесь, что вы включили 3 плагина FreeImage, установив их и активировав с помощью командных строк. &builder=freeimage
активирует полный конвейер FreeImage, но &encoder=freeimage
просто активирует часть кодировщика (полезно, если вы хотите отредактировать изображение с помощью GDI+, но сохранить через FreeImage).
Вы, вероятно, также захотите использовать ignoreIcc=true
команда, так что вы не видите значения sRGB, интерпретируемые как Adobe RGB.