通过 imagemagick -modulate 从 Photoshop 色调/饱和度值改变现有图像的色调

Kev*_*Old 3 photoshop image colors imagemagick image-processing

我正在尝试将这张图像(以及其他类似图像)的色调以不同的渐变等方式从“蓝色”转换为我的设计师在 Photoshop 中完成的模型中定义的另一种颜色。

我从 Photoshop 附加了 2 个色相/饱和度屏幕,其中 HSL 值为紫色和橙色,但通过以下 ruby​​ 代码在 Imagemagick 中使用 -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")
Run Code Online (Sandbox Code Playgroud)

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

通过传递“modulate:colorspace=HSB”,我比不传递“modulate:colorspace=HSB”取得了更大的成功,但仍然无法一致地插入从 Photoshop 接收到的值,并让它获取基础蓝色图像并改变色调。

这可以做到吗?

我想将基蓝色图像转换为另一种颜色

Photoshop 中的焦橙色色调饱和度

Photoshop 中的紫色色调饱和度

xke*_*xke 5

我注意到上面的代码中有一个错误。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;
Run Code Online (Sandbox Code Playgroud)

这是我用于绿色的:

for dir in *; do convert -define modulate:colorspace=HSB $dir/original.png -modulate 100,100,270 $dir/original_green.png; done;
Run Code Online (Sandbox Code Playgroud)

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

希望这有帮助!