Imagemagick Spotify-подобное дуотоновое наложение - PullRequest
0 голосов
/ 17 октября 2018

Можно ли достичь этой степени манипулирования цветом, используя команды imagemagick?

enter image description here

Я полагаю, это может быть сделано с level-color и специальным прозрачным png для фигур.
Также требуется изменить исходные цветач / б перед любыми манипуляциями с цветовыми уровнями?

1 Ответ

0 голосов
/ 17 октября 2018

Это один из способов сделать это в Imagemagick.Да, вам нужно маскировать изображения.Вы можете или не можете преобразовать свои данные в оттенки серого.Но в этом случае, я подозреваю, вы хотите начать с оттенков серого.

Вот мой ввод:

enter image description here

Здесь я создаю 4простые неперекрывающиеся прямоугольные области двоичных масок.Но в вашем примере это похоже на то, как часть желтого перекрывается с зеленым, чтобы сделать оранжевый цвет

convert -size 100x299 xc:white -size 300x299 xc:black +append mask1.png
convert -size 100x299 xc:black -size 100x299 xc:white -size 200x299 xc:black +append mask2.png
convert -size 200x299 xc:black -size 100x299 xc:white -size 100x299 xc:black +append mask3.png
convert -size 300x299 xc:black -size 100x299 xc:white +append mask4.png


enter image description here

enter image description here

enter image description here

enter image description here

Затем я создаю 4 различных цветных изображениятого же размера, что и входные данные, и последовательно скомпонуйте их, используя каждую из масок, сохраненную в изображении в памяти (mpr: img), которое я создал из изображения в градациях серого.50% -50%) (Обратите внимание, что при желании можно использовать другие соотношения смешивания, используя -define compose: args = 50,50 путем изменения двух чисел, но оставьте общее значение = 100)

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img -fill red -colorize 100 \) mask1.png -compose blend -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill green1 -colorize 100 \) mask2.png -compose blend -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill blue -colorize 100 \) mask3.png -compose blend -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill yellow -colorize 100 \) mask4.png -compose blend -composite \
result1.jpg


enter image description here

метод составления: умножить

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img -fill red -colorize 100 \) mask1.png -compose multiply -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill green1 -colorize 100 \) mask2.png -compose multiply -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill blue -colorize 100 \) mask3.png -compose multiply -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill yellow -colorize 100 \) mask4.png -compose multiply -composite \
result2.jpg


enter image description here

метод составления: наложение

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img -fill red -colorize 100 \) mask1.png -compose overlay -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill green1 -colorize 100 \) mask2.png -compose overlay -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill blue -colorize 100 \) mask3.png -compose overlay -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill yellow -colorize 100 \) mask4.png -compose overlay -composite \
result3.jpg


enter image description here

метод составления: colorize

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img -fill red -colorize 100 \) mask1.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill green1 -colorize 100 \) mask2.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill blue -colorize 100 \) mask3.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill yellow -colorize 100 \) mask4.png -compose colorize -composite \
result4.jpg


enter image description here

Есть много других методов сочинения, которые вы можете попробовать.См. https://imagemagick.org/Usage/compose/

Вы также можете сделать то же самое, используя + level-colors с черным или белым в качестве второго цвета.

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,red \) mask1.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,green1 \) mask2.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,blue \) mask3.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,yellow \) mask4.png -compose colorize -composite \
result5.jpg


enter image description here

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img +level-colors red,white \) mask1.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors green1,white \) mask2.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors blue,white \) mask3.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors yellow,white \) mask4.png -compose colorize -composite \
result6.jpg


enter image description here

Вы также можете сделать это с -tint.

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img -fill red -tint 100 \) mask1.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill green1 -tint 100 \) mask2.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill blue -tint 100 \) mask3.png -compose colorize -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill yellow -tint 100 \) mask4.png -compose colorize -composite \
result7.jpg


enter image description here

Результаты отличаются в зависимости от различных методов составления.Вот те последние 3 с составлением, а не составлением раскрашивания:

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,red \) mask1.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,green1 \) mask2.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,blue \) mask3.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors black,yellow \) mask4.png -compose over -composite \
result5b.jpg


enter image description here

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img +level-colors red,white \) mask1.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors green1,white \) mask2.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors blue,white \) mask3.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img +level-colors yellow,white \) mask4.png -compose over -composite \
result6b.jpg


enter image description here

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img -fill red -tint 100 \) mask1.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill green1 -tint 100 \) mask2.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill blue -tint 100 \) mask3.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img -fill yellow -tint 100 \) mask4.png -compose over -composite \
result7b.jpg


enter image description here

См. Также https://imagemagick.org/Usage/color_mods/#duotone для метода, использующего пользовательский цветной поискизображение таблицы с функцией -clut.Вот этот метод:

convert barn.jpg -colorspace gray -write mpr:img +delete \
mpr:img \( mpr:img \( -size 1x1 xc:black xc:red xc:white +append -size 1x256 gradient: -rotate 90 +swap -interpolate Bicubic -clut \) -interpolate Bicubic -clut \) mask1.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img \( -size 1x1 xc:black xc:green1 xc:white +append -size 1x256 gradient: -rotate 90 +swap -interpolate Bicubic -clut \) -interpolate Bicubic -clut \) mask2.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img \( -size 1x1 xc:black xc:blue xc:white +append -size 1x256 gradient: -rotate 90 +swap -interpolate Bicubic -clut \) -interpolate Bicubic -clut \) mask3.png -compose over -composite -write mpr:img +delete \
mpr:img \( mpr:img \( -size 1x1 xc:black xc:yellow xc:white +append -size 1x256 gradient: -rotate 90 +swap -interpolate Bicubic -clut \) -interpolate Bicubic -clut \) mask4.png -compose over -composite \
result8.jpg


enter image description here

Мне кажется, это наиболее близкий результат окраски к тому, который использовался в вашем оригиналепример.

...