2013-07-30 53 views
2

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

你使用'使用严格的;使用警告'?也许GD会告诉你什么是错的。顺便说一下:GLOB文件句柄已过时。你应该使用词法文件句柄。 '打开(我的$ fh,“>”,“/ home/...”' – Demnogonis

+0

好的,谢谢你的提示! 我刚解决了这个问题,我只好改变了圆的颜色。成为背景(蓝色),圆形使用该颜色,因此没有任何东西可见。 我现在觉得很愚蠢,但也许这对其他初学者有帮助 –

+0

我知道这种感觉:D。很高兴您能够正常工作 – Demnogonis

回答

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,它具有更现代的设计。

0

尝试添加:

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

您绘制在相同颜色的弧线作为背景

+0

谢谢您的支持但是我自己解决了这个问题 我觉得很愚蠢,因为它不明显,但很容易。无论如何,现在一切正常( 谢谢,祝你有美好的一天! –