Perl GD 不画圆,而是每次画一个矩形
Posted
技术标签:
【中文标题】Perl GD 不画圆,而是每次画一个矩形【英文标题】:Perl GD does not draw circles, instead it draws a rectangle every time 【发布时间】:2013-07-30 13:16:07 【问题描述】:我最近发现了 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 strict; use warnings
吗?也许GD会告诉你什么是错的。顺便说一句:GLOB 文件句柄已过时。您应该使用词法文件句柄。 open(my $fh,">","/home/..."
好的,谢谢你的提示!我刚刚解决了这个问题,我只需要改变圆圈的颜色。第一个分配的颜色成为背景(蓝色),圆圈使用该颜色,所以什么都看不到。我现在觉得自己很蠢,但也许这对其他初学者有帮助。
我知道那种感觉:D。很高兴你成功了
【参考方案1】:
我认为问题在于背景和前景颜色相同。
这是一个工作示例,它在透明物体上绘制一个蓝色圆圈 背景:
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。
【讨论】:
【参考方案2】:尝试添加:
my $image1 = new GD::Image(100,100);
my $white = $image1->colorAllocate(255,255,255);
my $blue = $image1->colorAllocate(0,0,255);
您正在绘制与背景颜色相同的圆弧
【讨论】:
谢谢你们的快速回答,但我自己解决了这个问题。我觉得很愚蠢,因为这并不明显,但很容易。没关系,现在一切正常(:谢谢,祝您有美好的一天!以上是关于Perl GD 不画圆,而是每次画一个矩形的主要内容,如果未能解决你的问题,请参考以下文章