2013-07-30 89 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

謝謝您的支持但是我自己解決了這個問題 我覺得很愚蠢,因爲它不明顯,但很容易。無論如何,現在一切正常( 謝謝,祝你有美好的一天! –