imagecolorallocatealpha返回白色图像

时间:2012-10-18 07:15:27

标签: php png transparency gd

PHP中的imagecolorallocatealpha存在问题。将不透明度设置为127时,我会得到一个白色图像而不是透明图像。

这是我的代码

$image = imagecreatetruecolor($width, $height);
imagesavealpha($image, true);
$color = imagecolorallocatealpha($image, 255, 255, 255, 127);
imagefill($image, 0, 0, $color);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
exit;

我也试过这个,但我得到了相同的结果

$image = imagecreatetruecolor($width, $height);
$x = imagecolorat($image, 0,0);
imagecolortransparent($image, $x);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
exit;

有什么想法吗?它可以与服务器配置相关吗?

2 个答案:

答案 0 :(得分:1)

替换第一行

$image = imagecreatetruecolor($width, $height);

$image = imagecreate($width, $height);

透明度现在应该有效,但颜色调色板不会显示出一些真正的颜色。

任何白色像素现在都是透明的。

要从白色更改透明度颜色,请使用:

$r = *red colour value (0 to 255)*;
$g = *green colour value (0 to 255)*;
$b = *blue colour value (0 to 255)*;
$color = imagecolorallocatealpha($image, $r, $g, $b, 127);

答案 1 :(得分:-1)

如果全部您用于图像文件的代码,则尚未为$width$height变量定义任何值,并且脚本会抛出错误。

作为一般规则,当您要调试图像时,请删除Content-Type标头。这样,您可以通过在浏览器中访问脚本来查看任何潜在的错误。