我使用PHP和Imagick来改变透明PNG的颜色。 PNG中的图像是一个简单的形状,背景透明。
我使用colorizeImage函数来改变颜色。
$img = new Imagick("shape.png");
$img->colorizeImage("#99ccff",0.0);
问题是Imagick显示我的HEX代码的黑暗版本(#99ccff
)?
有没有办法获得确切的颜色(#99ccff
)?
(我的PNG是PNG 32 - 形状是黑色)
答案 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通道。