PHP GD 在另一个形状上绘制形状并使其透明

时间:2021-02-16 13:19:55

标签: php drawing transparency gd

我正在开发一个图表库,我使用 GD 来绘制图表和仪表。这一切都很好,但我希望有透明背景的可能性。我终于搞定了,但现在我遇到了一个新问题。

要绘制复杂的仪表,我会在彼此之间绘制多个形状。就像当我需要一个甜甜圈饼图时,我画了一个普通的饼图——然后我画了一个中心椭圆,给人一种甜甜圈的印象。当有像白色或任何其他颜色这样的背景颜色时,这很有效。使用透明背景时,这将绘制饼图和所有内容 - 我绘制了甜甜圈中心,但我无法将中心变为透明。

饼图: Pie Chart

圆环图: Donut Chart

我无法让中心(白色)透明,我不想用 alpha 透明度绘制中心,因为馅饼会发光 - 但我想用透明像素替换白色。

我尝试了 imagecolortransparent($image, $white); 但无法让它工作。任何可以为我指明正确方向的人,或者可以告诉我是否有可能的人。

1 个答案:

答案 0 :(得分:0)

我让它工作了,可能对其他有同样问题的人有用。我用纯色绘制中心,然后在形状的中心进行图像填充。我用 alpha 透明度设置为 127 的真彩色填充它。这将(在我的情况下为白色)像素替换为设置为全透明的像素。

Pie Radial Pie

在创建时我使用 imagecreatetruecolor 并设置 imagesavealpha($image, true)。我设置 imagealphablending($image, false) 因为它会导致其他颜色的 Alpha 完全去除背景(如问题中甜甜圈中的指示器)。

相关问题