Image Perl GD不画圆,而是每次都画一个矩形

Image Perl GD不画圆,而是每次都画一个矩形,image,perl,gd,Image,Perl,Gd,我最近发现了Perl模块GD,我想尝试一下。 到目前为止,我在创建新对象、分配颜色和将整组数据重定向到文件中都没有遇到任何问题。 当我在查看器中打开图像文件时,出现了问题: 不管我做了什么更改,它只显示了一个矩形。为了取笑我,它只有正确的颜色(蓝色) 怎么了?创建圆是否不正确 我会继续努力,但任何帮助都是感激的。 提前感谢您的帮助 这是我目前的代码: my $image1 = new GD::Image(100,100); my $blue = $image1->colorAllocate

我最近发现了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);

我认为问题在于背景和前景是相同的颜色

下面是一个工作示例,它在透明屏幕上绘制了一个蓝色圆圈 背景:

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()
的对象表示法样式<代码>文件::Slurp用于清理文件的写入

如果您是Perl图像处理新手,我建议您 还可以查看Imager.pm,它的设计更为现代。

尝试添加:

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

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

是否使用
使用strict;使用警告
?也许GD会告诉你怎么了。顺便说一下:GLOB文件句柄已经过时了。您应该使用词法文件句柄<代码>打开(我的$fh,“>”,“/home/…”好的,谢谢你的提示!我刚刚解决了这个问题,我只需要更改圆圈的颜色。第一个分配的颜色成为背景(蓝色)圆圈使用了这种颜色,所以什么都看不见。我现在觉得很愚蠢,但也许这对其他初学者有帮助。我知道那种感觉:D.很高兴你能帮你快速回答,但我自己解决了问题。我觉得很愚蠢,因为这不明显,但很容易。不管怎样,现在一切都很好)谢谢,祝你今天愉快!