3

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

使用 GD 执行此操作的最佳方法是什么?

干杯,
詹姆斯

4

2 回答 2

7

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

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

我设法使用 imagefilter 和 colorize 如下:

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

应用着色。

于 2009-08-17T02:11:40.133 回答
2

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");

?>
于 2009-06-04T17:42:11.290 回答