把你的text.txt再发上来看看\、|? 2009/11/3 zhihua zheng <[email protected]>
> 你的text.txt是不是有问题| 要不怎么读不进去? > > 2009/11/3 chunjiang he <[email protected]> > > 我用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); >> >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ 您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
