我有一个透明的PNG图像。透明区域需要保持完全透明,但其他区域需要使用特定的色调着色。
使用GD执行此操作的最佳方法是什么?
干杯,
詹姆斯
答案 0 :(得分:7)
上述解决方案对我不起作用。
你在这里用红色填充alpha区域;我相信这不是目标。目标是为图像的其余部分着色并保持alpha不变。 (另外,错误使用函数imagecolorallocate,你应该使用imagecolorallocatealpha。)
我设法使用imagefilter并着色如下:
imagefilter($ image,IMG_FILTER_COLORIZE,0,255,0,30);
应用着色。
答案 1 :(得分:2)
GD库确实支持alpha透明度,所以这应该不是问题。这就是我把它放在一起的方法 - 你可能需要调整它,但它的要点应该在那里。
红色/绿色/蓝色为0-255。 Alpha为0-127(127为完全透明)。此代码应对图像“original.png”应用50%的红色调,并输出为“output.png”。
<?php
$red = 255;
$green = 0;
$blue = 0;
$alpha = 63
$src_img = imagecreatefrompng("original.png");
$tint_img = imagecreatetruecolor(imagesx($im_src), imagesy($im_src));
$tintcolor = imagecolorallocate($tint_img, $red, $green, $blue, $alpha);
imagefill($tint_img, 0, 0, $tintcolor);
imagecopymerge($tint_img, $src_img, 0, 0, 0, 0, imagesx($im_src), imagesy($img_src), 100);
imagepng("output.png");
?>