Как создать прозрачный полноцветный PNG-файл с Perl & GD? - PullRequest
3 голосов
/ 24 марта 2010

Кажется, это тривиальная проблема, но я не пробовал сделать фон прозрачным.

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 Ответ

4 голосов
/ 24 марта 2010

Вы используете $im->saveAlpha(1)? В противном случае альфа-информация полезна только при построении изображения. Сохраненное изображение не будет прозрачным.

Быстрый и грязный метод, который может оказаться недостаточным для ваших целей, - это забыть об альфа-канале и использовать метод GD::Image::transparent.

...