代码之家  ›  专栏  ›  技术社区  ›  aidan

如何使用Perl&GD创建透明的TrueColor PNG?

  •  3
  • aidan  · 技术社区  · 14 年前

    这似乎是一个微不足道的问题,但我所做的一切都无法使背景变得透明。

    use strict;
    use warnings;
    use GD
    
    GD::Image->trueColor(1);
    my $im = new GD::Image(100, 100);
    
    my $clear = $im->colorAllocateAlpha(255, 255, 255, 127);
    my $black = $im->colorAllocateAlpha(0, 0, 0, 0);
    
    $im->alphaBlending(0);
    $im->filledRectangle(0, 0, 100, 100, $clear);
    
    $im->alphaBlending(1);
    $im->stringFT($black, "a-ttf-font.ttf", 12, 0, 20, 20, "x");
    
    binmode STDOUT;
    print $im->png;
    

    谢谢你的指导。

    1 回复  |  直到 14 年前
        1
  •  4
  •   mob    14 年前

    你在用吗 $im->saveAlpha(1) ?否则,alpha信息只在构建图像时有用。保存的图像将不透明。

    一个快速而肮脏的方法,可能不足以满足您的目的,就是忘记alpha通道并使用 GD::Image::transparent 方法。