2

我最近发现了 Perl 模块 GD,我想尝试一下。到目前为止,我在创建新对象、分配颜色并将整堆数据重定向到文件中都没有遇到任何问题。当我在查看器中打开图像文件时,问题出现了:无论我更改了什么,它都只是显示一个矩形。为了取笑我,它只有正确的颜色(蓝色)。

怎么了?圈子的创建不正确吗?

我会继续努力,但感谢任何帮助。在此先感谢您的帮助!

到目前为止,这是我的代码:

my $image1 = new GD::Image(100,100);
my $blue = $image1->colorAllocate(0,0,255);
$image1->arc(100,100,50,50,0,360,$blue);
my $print = $image1->png;

open(IMG,">","/home/bernd/perl/pie.png");
binmode IMG;
print IMG $print;
close(IMG);
4

2 回答 2

2

我相信问题在于背景和前景是相同的颜色。

这是一个在透明背景上绘制蓝色圆圈的工作示例:

use GD::Image;
use File::Slurp;

my $image1 = GD::Image->new(100,100);
my $white = $image1->colorAllocate(255,255,255);
my $blue = $image1->colorAllocate(0,0,255);
$image1->transparent($white);
$image1->interlaced('true');

$image1->arc(50,50,100,100,0,360,$blue);

write_file("/home/bernd/perl/pie.png", $image1->png);

我还更新了对象创建以避免使用new GD::Image()不推荐的间接对象表示法样式。File::Slurp用于清理写出文件。

如果您不熟悉使用 Perl 进行图像处理,我建议您还查看 Imager.pm,它具有更现代的设计。

于 2013-07-30T13:32:38.020 回答
0

尝试添加:

my $image1 = new GD::Image(100,100);
my $white = $image1->colorAllocate(255,255,255);
my $blue = $image1->colorAllocate(0,0,255);

您正在以与背景相同的颜色绘制弧线

于 2013-07-30T13:36:12.527 回答