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;
有什么想法吗?它可以与服务器配置相关吗?
答案 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标头。这样,您可以通过在浏览器中访问脚本来查看任何潜在的错误。