Imagick colorizeImage Hex更暗

时间:2011-11-19 07:59:08

标签: php imagick

我使用PHP和Imagick来改变透明PNG的颜色。 PNG中的图像是一个简单的形状,背景透明。

我使用colorizeImage函数来改变颜色。

$img = new Imagick("shape.png");
$img->colorizeImage("#99ccff",0.0);

问题是Imagick显示我的HEX代码的黑暗版本(#99ccff)?

有没有办法获得确切的颜色(#99ccff)?

(我的PNG是PNG 32 - 形状是黑色)

http://www.2shared.com/photo/N3rGdoHG/shape3.html

3 个答案:

答案 0 :(得分:4)

我想我会回答这个问题,尽管它已经老了。这适用于遇到此问题的其他人。

我通过简单地使用“Clut”来解决这个问题,就像这样:

$img = new Imagick("shape.png");
$clut = new Imagick();
$clut->newImage(1, 1, new ImagickPixel('#99ccff'));
$img->clutImage($clut);
$clut->destroy();

希望它可以帮助其他人解决这个问题。

答案 1 :(得分:2)

 $img = new Imagick("shape.png");
 $img->colorizeImage("#99ccff",0.0);

第二个参数是不透明度。如果将其设置为1.0,它将匹配#99ccff 100%。您可以将其设置为0.5以满足原始图层的50%等:

 $img = new Imagick("shape.png");
 $img->colorizeImage("#99ccff", 1.0);

答案 2 :(得分:1)

您必须提供不透明度,不透明度值必须为整数1,

$img->colorizeImage('#99ccff', 1); 

或它不起作用,我测试了一下,我认为使用透明度你需要提供alpha通道。