首页 > 解决方案 > PHP GD 在另一个形状上绘制形状并使其透明

问题描述

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

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

饼形图: 饼形图

甜甜圈图: 甜甜圈图

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

我试过imagecolortransparent($image, $white);但不能让它工作。任何可以指出我正确方向的人,或者可能告诉我这是否可能。

标签: phpdrawingtransparencygd

解决方案


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

馅饼 径向馅饼

在我使用imagecreatetruecolor和设置的创作中imagesavealpha($image, true)。我没有设置imagealphablending($image, false),因为它会导致带有 Alpha 的其他颜色完全移除背景(如问题中甜甜圈中的指示符)。


推荐阅读