Композит ImageMagick на HSL (не HSB и не HSV)
Я просто хочу заменить режимы наложения HSL (цвет / оттенок / насыщенность / яркость) в Photoshop, написав инструмент CUI. Лучше, если я смогу сделать это через RMagick.
ImageMagick может управлять цветовым пространством HSL, но составные операторы ImageMagick Colorize/Hue/Saturation/Luminize жестко запрограммированы и основаны на цветовом пространстве HSB.
Есть ли обходной путь без написания попиксельного кода обработки? Благодарю.
1 ответ
Я попробовал раздельно-комбинированный подход. Тогда история началась.
В ImageMagick-6.6.9-7 обнаружена ошибка с вычислением rgb<->hsl. Ubuntu 12.04 LTS предоставляет репозиторий пакетов... grrrr (само ImageMagick, исправлено на r4431 и хорошо>> 6.6.9-9)
Затем я сажусь и делаю математику, чтобы получить простое выражение -fx.
colorize_hsl.fx:
ul = u.lightness; vl = v.lightness;
bias = (ul < .5 ? ul : 1 - ul)/(vl < .5 ? vl : 1 - vl);
(v - vl)*bias + ul
Это формула на основе RGB, чтобы установить новую яркость и сохранить его оттенок и насыщенность. Чтобы получить luminize_hsl, замените u и v.
Временные переменные (ul, vl и bias) распространены во всех каналах, но -fx engine может попробовать это 3 раза. Этого не достаточно...