我觉得可能是把GD的对象$im放在了循环里所以出问题,请高手帮忙看看
On 11月3日, 下午12时45分, Anthony WU <[email protected]> wrote: > 應該是紅色所示的地方有問題吧 > > > > > > -------- Original Message -------- > Subject: [PerlChina] GD画图请教 > From: chunjiang he <[email protected]> > To: [email protected] > Date: 3/11/2009 10:22 > > 我用GD画图的时候,能不能读取一个文件中的数据然后画图呢,我这样做了,但 > > 是出现internal server error错误。 > > 如果不从文件中读取,而是把数据放在程序中,就没有问题,请大家指教 > > > 下面是我从文件中读取数据然后画图的程序: > > > #!d:/perl/bin/perl > > > use GD; > > > print "Content-type: image/png\n\n"; > > > my $file="test.txt"; > > > sub min{ > > my @a...@_; > > my $s=pop @a;; > > @a=map {$_-$s} @a; > > return @a; > > > } > > > my @new; > > > open(FILE,$file) or die; > > while(my $line=<FILE>){ > > chomp $line; > > my @num=split /,/$dd[4]; > > push @new,@num; > > > } > > > close(FILE); > > > @new=sort {$a<=>$b} @new; > > > my $cha=$new[-1]-$new[0]; > > > my $bei=$cha/700; > > #my $bei=int ($cha/600); > > my $size=$cha/$bei; > > > # create a new image 图片大小按压缩之后X1.1倍 > > my $im = new GD::Image($size*1.1+100,100); > > > # allocate some colors > > my $white = $im->colorAllocate(255,255,255); > > my $black = $im->colorAllocate(0,0,0); > > my $red = $im->colorAllocate(255,0,0); > > my $blue = $im->colorAllocate(0,0,255); > > > # make the background transparent and interlaced > > $im->transparent($white); > > $im->interlaced('true'); > > > my $one=0; > > my $two=20; > > my $three=10; > > my $four=5; > > > open(FILE,$file) or die; > > while(my $line=<FILE>){ > > chomp $line; > > my @dd=split /\t/,$line; > > my $name=$dd[1]; > > my @num=split /,/,$dd[4]; > > @num=sort {$a<=>$b} @num; > > > @num= &min(@num,$new[0]); ##传递参数给子程序的时候,会将所有参数存为一 > > 个数组 @_ > > > for(my $i=0;$i<@num;){ > > $im->rectangle($num[$i]/$bei+100,$one,$num[$i+1]/$bei+100,$two, > > $black); > > $im->fill($num[$i]/$bei+100+($num[$i+1]/$bei-$num[$i]/$bei)/2,$three, > > $black); > > $i=$i+2; > > } > > for(my $i=1;$i<@num-1;){ > > $im->line($num[$i]/$bei+100,$three,$num[$i+1]/$bei+100,$three, > > $black); > > $i=$i+2; > > } > > > $im->string(gdLargeFont,0,$four,$name,$black); > > > # make sure we are writing to a binary stream > > binmode STDOUT; > > > # Convert the image to PNG and print it on standard output > > print $im->png; > > > $one=$one+40; > > $two=$two+40; > > $three=$three+40; > > $four=$four+35; > > > } > > > close(FILE); > > -- > Best Regards, > Anthony WU- 隐藏被引用文字 - > > - 显示引用的文字 - --~--~---------~--~----~------------~-------~--~----~ 您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
