使用 PHP 的 GD 函数,如何创建一个抗锯齿且具有透明背景的椭圆(带有 alpha 的 PNG24)?

发布于 2024-08-25 00:02:31 字数 219 浏览 10 评论 0原文

我可以在透明背景上画一个圆圈,但它的边缘像素化。

我还可以使用 http://mierendo.com/software 在非透明背景上获得抗锯齿圆圈/antialiased_arcs/

那么,我如何同时获得两者呢?

I'm able to draw a circle on a transparent background, but it's pixelated around the edges.

I can also get an anti-aliased circle on a non-transparent background with http://mierendo.com/software/antialiased_arcs/.

So, how do I get both?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

年少掌心 2024-09-01 00:02:31

透明图像的问题在于,边框处的半透明像素将部分着色为您指定为透明颜色的颜色,如果您可以忍受这一点,那么您可以使用您指定的抗锯齿弧库,只需输入以下内容在他们的示例的开头(我使用了优化版本):

include ("./imageSmoothArc_optimized.php");

$img = imageCreateTrueColor( 648, 800 );
imagealphablending($img,true);
$color = imageColorAllocate( $img, 255, 255, 255);
$transparent_color = imageColorAllocate( $img, 0, 0, 0);
imagefill( $img, 5, 5, $transparent_color );
imagecolortransparent($img, $transparent_color);

这将为您提供透明的 PNG 图像。由于我指定黑色作为透明颜色,因此圆圈在边缘附近将变为黑色,并且您只能在深色背景上使用它。

The trouble with transparent images is that the half-transparent pixels at the border will be partly colored with the color you specified as the transparent color, if you can live with that then you can use the antialiased arcs library you specified, just put the following at the beginning of their example (I used the optimized version) :

include ("./imageSmoothArc_optimized.php");

$img = imageCreateTrueColor( 648, 800 );
imagealphablending($img,true);
$color = imageColorAllocate( $img, 255, 255, 255);
$transparent_color = imageColorAllocate( $img, 0, 0, 0);
imagefill( $img, 5, 5, $transparent_color );
imagecolortransparent($img, $transparent_color);

This will give you a transparent PNG image. Since I specified black as the transparent color, the circles will go to black near the edge, and you will only be able to use this on a dark background.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文