PHP中带有GD的透明背景

Posted

技术标签:

【中文标题】PHP中带有GD的透明背景【英文标题】:Transparent background with GD in PHP 【发布时间】:2012-04-03 13:25:28 【问题描述】:

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

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

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" />

【问题讨论】:

我的经验是GD在抗锯齿方面很糟糕,你有没有考虑过使用ImageMagick? 不是真的(因为我的图表构建器在 GD 中几乎完成了)。那里的反别名更好吗? 【参考方案1】:

PHP 手册基本上说你不能:

它不支持 alpha 组件。它使用直接混合工作 手术。它仅适用于真彩色图像。

不支持粗细和样式。

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

http://es.php.net/imageantialias

因此,除非有人提供第三方代码或一些机智的 hack,否则你就不走运了。

【讨论】:

好的,感谢您的帮助!那我再找个解决办法。

以上是关于PHP中带有GD的透明背景的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GD 使用 PHP 创建透明背景?

php怎么输出背景透明的图片?

使用gd在php中调整图像大小后的黑色背景

使用 GD 的背景图像透明度

使用透明背景的 GD 绘制文本

imagecreatefrompng() 制作黑色背景而不是透明?