通过Photoshop Hue / Saturation值中的imagemagick -modulate在现有图像上移动色调

时间:2014-04-02 21:06:03

标签: image image-processing colors imagemagick photoshop

我试图将这个图像的色调(以及其他类似的图像)转换为来自" blue"的变化渐变等。我的设计师从Photoshop中完成的模型中定义的另一种颜色。

我已经从Photoshop附加了2个Hue / Saturation屏幕,其中HSL值为紫色和橙色,但在Imagemagick中通过此ruby代码使用-modulate:

# burnt orange - works
hue = 25.0 # must be a decimal
sat = 100
bri = 0

# purple - does not work
#hue = 266.0 # must be a decimal
#sat = 100
#bri = 0

# formula from -modulate http://www.imagemagick.org/Usage/color_mods/#modulate
h = ( hue * 100/180 ) + 100

system("convert -define modulate:colorspace=HSB home_tab_back_right.png -modulate #{h},#{sat},#{bri} #{h}-#{sat}-#{bri}-home_tab_back_right.png")

这适用于烧焦的橙色图像,但不适用于紫色和其他颜色。

通过传递" modulate:colorspace = HSB"我取得了更大的成功。比没有,但仍然无法始终插入从Photoshop收到的值,并采取基本的蓝色图像和转移色调。

可以这样做吗?

base blue image I would like shifted to another color

burnt orange hue saturation from photoshop

purple hue saturation from photoshop

1 个答案:

答案 0 :(得分:2)

我注意到上面代码中的一个错误。 ImageMagick“-modulate”选项实际上预期数字的顺序为:$ brightness,$ saturation,$ hue。

我需要将子文件夹中的“original.png”图像从原始蓝色转换为红色和绿色版本。

这是我用于红色的:

for dir in *; do convert -define modulate:colorspace=HSB $dir/original.png -modulate 100,100,180 $dir/original_red.png; done;

这是我用于绿色的:

for dir in *; do convert -define modulate:colorspace=HSB $dir/original.png -modulate 100,100,270 $dir/original_green.png; done;

请注意,在上面,我保持亮度和饱和度与原始(100)相同并调整色调(180为蓝色>红色,270为绿色>红色)。

希望这有用!