如何在PHP中着色透明PNG文件?

如何在PHP中着色透明PNG文件?,php,png,transparency,gd,png-24,Php,Png,Transparency,Gd,Png 24,我有一个透明的PNG图像。透明区域需要保持完全透明,但其他区域需要使用特定色调着色 使用GD的最佳方法是什么 干杯, JamesGD库确实支持alpha透明,因此这应该不是问题。这里是我如何把它放在一起的-你可能需要调整这个,但它的要点应该在那里 红色/绿色/蓝色为0-255。Alpha为0-127(127为完全透明)。此代码应该对图像“original.png”应用50%的红色色调,并输出为“output.png” 上述解决方案对我不起作用 你在这里用红色填充阿尔法区域;我认为这不是目标。目的

我有一个透明的PNG图像。透明区域需要保持完全透明,但其他区域需要使用特定色调着色

使用GD的最佳方法是什么

干杯,

James

GD库确实支持alpha透明,因此这应该不是问题。这里是我如何把它放在一起的-你可能需要调整这个,但它的要点应该在那里

红色/绿色/蓝色为0-255。Alpha为0-127(127为完全透明)。此代码应该对图像“original.png”应用50%的红色色调,并输出为“output.png”


上述解决方案对我不起作用

你在这里用红色填充阿尔法区域;我认为这不是目标。目的是对图像的其余部分着色,使alpha保持不变。 (另外,如果函数imagecolorallocate使用错误,则应使用imagecolorallocatealpha。)

我设法使用imagefilter并按如下方式着色:

($image,IMG_FILTER_COLORIZE,0,255,0,30)


要应用着色。

请务必查看解决方案,了解如何使用“否定”将白色区域着色:
<?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");

?>