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

PHP GD draw shape over another shape and make it transparent

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

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

饼图:

甜甜圈图:

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

我试过 imagecolortransparent($image, $white); 但无法正常工作。任何人都可以指出正确的方向,或者可以告诉我是否可行。

我成功了,可能对遇到同样问题的其他人派上用场。我用纯色绘制中心,然后在形状的中心做一个图像填充。我用 alpha 透明度设置为 127 的真彩色填充它。这用像素设置为完全透明替换了(在我的例子中是白色)像素。

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