我有一个透明的PNG图像。透明区域需要保持完全透明,但其他区域需要用特定的色调着色。
使用 GD 执行此操作的最佳方法是什么?
干杯,
詹姆斯
我有一个透明的PNG图像。透明区域需要保持完全透明,但其他区域需要用特定的色调着色。
使用 GD 执行此操作的最佳方法是什么?
干杯,
詹姆斯
上述解决方案对我不起作用。
您在这里用红色填充 alpha 区域;我认为这不是目标。目标是对图像的其余部分进行着色并保持 alpha 不变。(另外,函数 imagecolorallocate 的错误使用,你应该使用 imagecolorallocatealpha。)
我设法使用 imagefilter 和 colorize 如下:
imagefilter ($image, IMG_FILTER_COLORIZE, 0, 255, 0, 30);
应用着色。
GD 库确实支持 alpha 透明度,所以这应该不是问题。这就是我将它放在一起的方式 - 你可能需要调整它,但它的要点应该在那里。
红/绿/蓝为 0-255。Alpha 是 0-127(127 是完全透明的)。此代码应将 50% 的红色色调应用于图像“original.png”并输出为“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");
?>