无论如何使用GD在图像上添加透明色层?
这是一个例子。我收到的图像看起来像在左侧(图像是一个透明的背景)。如果我将#ff0000这样的颜色传递给程序,我想在图像上添加一个50%透明的颜色层,但只有在其上有东西的区域,结果图像仍然会有一个透明的背景,看起来像在右边。
<?php
$img = 'color.png';
$hex = "#ff0000";
list($width, $height) = getimagesize($img);
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
$img_a = imagecreatefrompng($img);
imagealphablending($img_a, true);
$layer = imagecolorallocatealpha($img_a, $r, $g, $b, 50);
imagefilledrectangle($img_a, 0, 0, $width, $height, $layer);
header('Content-Type: image/png');
imagepng($img_a);
imagedestroy($img_a);
?>