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的其他颜色完全去除背景(就像问题中甜甜圈中的指示器)。
我正在开发图表库,我使用 GD 绘制图表和仪表。这一切都很好,但我希望有透明背景的可能性。我终于搞定了,但现在我遇到了一个新问题。
为了绘制复杂的仪表,我会在彼此之上绘制多个形状。就像当我需要一个甜甜圈饼图时,我会画一个普通的饼图——然后我画一个中心椭圆,给人一种甜甜圈的印象。当有白色或任何其他颜色的背景颜色时,这很有效。使用透明背景时,这会绘制饼图和它应该绘制的所有内容 - 我绘制了甜甜圈中心,但我无法将中心变为透明。
饼图:
甜甜圈图:
我无法让中心(白色)变得透明,我不想用 alpha 透明度绘制中心,因为馅饼会发光 - 但我想用透明像素替换白色。
我试过 imagecolortransparent($image, $white);
但无法正常工作。任何人都可以指出正确的方向,或者可以告诉我是否可行。
我成功了,可能对遇到同样问题的其他人派上用场。我用纯色绘制中心,然后在形状的中心做一个图像填充。我用 alpha 透明度设置为 127 的真彩色填充它。这用像素设置为完全透明替换了(在我的例子中是白色)像素。
创建时我使用 imagecreatetruecolor
并设置 imagesavealpha($image, true)
。我不设置imagealphablending($image, false)
因为它会导致Alpha的其他颜色完全去除背景(就像问题中甜甜圈中的指示器)。