2009年11月3日星期二

[PerlChina] Re: GD画图请教

我觉得可能是把GD的对象$im放在了循环里所以出问题,请高手帮忙看看

On 11月3日, 下午12时45分, Anthony WU <anthonywu...@gmail.com> wrote:
> 應該是紅色所示的地方有問題吧
>
>
>
>
>
> -------- Original Message --------
> Subject: [PerlChina] GD画图请教
> From: chunjiang he <camel...@gmail.com>
> To: perlchina@googlegroups.com
> 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 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: