想象一下|渐变映射

时间:2016-04-24 12:48:25

标签: php image filter imagick

我试图用imagick在图像上获得这种效果。在Photoshop中,它被称为渐变映射,但我无法在想象中找到类似的东西。

我认为我需要先将其设为黑白,但在这样做之后我就不知道如何添加颜色。

希望你能帮忙!感谢

---编辑:---

  • 我使用 Imagick ,而不是imagemagick。
  • 请注意,图像中有两种颜色,它不仅仅是着色的颜色。浅色为深蓝色,浅色为深绿色/浅绿色。

enter image description here

2 个答案:

答案 0 :(得分:7)

PHP Imagick版本

现在我了解了你的需求,我做了一个Imagick PHP版本:

<?php
   // Load input image
   $image = new Imagick('landscape.jpg');

   // Desaturate image
   $image->modulateImage(100,0,100);

   // Make duotone CLUT
   $clut = new Imagick();
   $clut->newPseudoImage(255,1,"gradient:darkblue-aqua");

   // Apply duotone CLUT to image
   $image->clutImage($clut);

   // Output result
   $image->writeImage('result.jpg');
?>

enter image description here

更新了答案

哦,我想你想要一个“双色调”而不是“tint”。基本上,您需要将图像去饱和为单色,制作双色调CLUT(颜色查找表)并应用它。

以下是如何制作CLUT:

convert -size 1x256! gradient:navy-orange duotone-clut.png

enter image description here

这个显然会让你的深色调呈深蓝色,而你的亮点会变成橙色,但你可以根据自己的喜好随意搭配颜色。您还可以使用以下语法指定RGB(或HSL)的任何阴影:

convert -size 1x256! gradient:"rgb(255,255,0)-rgb(23,45,100)" ...

以下是如何将图像去饱和为灰色,然后应用CLUT:

convert landscape.jpg -modulate 100,0 \
  -size 256x1! gradient:navy-orange -clut result.jpg

-modulate需要3个参数 - 色调,饱和度和亮度。通过指定100,0,我将Hue保持在100%的任何位置,并将饱和度降低到零并使亮度保持不变。

enter image description here

顺便说一句,如果你想要一个带有3种颜色的“tritone”,一个用于阴影,一个用于中间调,一个用于高光,你可以这样做:

convert -size 1x1! xc:yellow xc:magenta xc:cyan +append -resize 256x1! -scale x20 clut.png

enter image description here

这给出了这个:

enter image description here

您还可以在CLUT中移动交叉点,使用对比度拉伸或使用相同颜色填充更大比例的CLUT。在这里,我通过2个黄色块使阴影颜色“更长”

convert -size 1x1! xc:yellow xc:yellow xc:magenta xc:cyan +append -resize 256x1!  clut.png

enter image description here

这会给“更长的”阴影:

enter image description here

显然你也可以制作四音(四音)。

原始答案

有很多方法可以达到这种效果。所以,从这张图片开始:

enter image description here

你可以使用这样的tint,它对应于PHP中的tintImage(),描述为here

convert landscape.jpg -colorspace gray -fill "rgb(10,100,130)" -tint 100 result.png

enter image description here

或者您可以克隆初始图像并使用您的色调填充克隆,然后将其合成到图像顶部。您可以在PHP中使用colorizeImage(),描述为here

convert landscape.jpg -colorspace gray                  \
   \( +clone -fill "rgb(10,100,130)" -colorize 100% \)  \
   -compose overlay -composite result.png

enter image description here

答案 1 :(得分:0)

PHP Imagick有一个名为pslayers的库,它允许您进行所描述的精确图像分层和合成。

它甚至允许您创建命令行scrips的接口,以便直接与命令行版本进行交互。