透明背景与GD在PHP中

时间:2012-04-03 13:25:28

标签: php gd

我正在尝试使用PHP和GD创建图表。该图表已经有效,但我 无法使背景透明(使用抗锯齿)。

我想在渐变背景上放置一条消除锯齿的线条(这是HTML背景),但它会显示一些白色像素(请参阅下面的图片链接和我的代码)。有可能用GD做到这一点吗?我在互联网上搜索了很多,但找不到任何解决方案。

Image showing aliasing problem

PHP

<?php
$img = imagecreatetruecolor(1000, 1000);

imagesavealpha($img, true);
imagealphablending($img, true);

$color = imagecolorallocatealpha($img, 255, 255, 255, 127); 
$red = imagecolorallocate($img, 255, 0, 0); 

imagefill($img, 0, 0, $color);

imageantialias($img, true);
imageline($img, 10, 10, 500, 20, $red);

header("content-type: image/png");
imagepng($img); 
imagedestroy($img); 
?>

HTML

<style type="text/css">
    body{
        background:url('/Image/background.png');
    }
</style>

<img src="./example.php" />

1 个答案:

答案 0 :(得分:1)

PHP手册基本上表明你不能:

  

它不支持alpha分量。它使用直接混合   操作。它仅适用于真彩色图像。

     

不支持厚度和样式。

     

使用具有透明背景颜色的抗锯齿图元可以结束   有一些意想不到的结果混合方法使用背景   颜色与任何其他颜色一样。缺乏alpha组件支持   不允许使用基于alpha的抗锯齿方法。

http://es.php.net/imageantialias

因此,除非有人带有第三方代码或一些诙谐的黑客,否则你运气不好。