[Initial revision ganesh**Thu Feb 22 02:31:36 GMT 2001] { addfile ./display.pl hunk ./display.pl 1 +#!/usr/bin/perl -wT + +use strict; + +use CGI; +use Image::Magick; + +use vars qw ($query $num $shrink $lastdate $filename $picfile + $temp1 $temp2 $oldpicfile $red $green $blue $pic); + +$query=new CGI; + +$num=$query->param('num'); +$shrink=$query->param('shrink'); +$red=$query->param('red'); +$green=$query->param('green'); +$blue=$query->param('blue'); + +$red=1 if (!defined $red); +$green=1 if (!defined $green); +$blue=1 if (!defined $blue); + +$shrink=1 if (!defined $shrink); + +untaint(\$num,'\d+','num must be a positive integer'); + +$filename = "P"."0" x (7-length($num)).$num.".JPG"; + +$picfile = "/misc/pictures/rawdigital/$filename"; + +$lastdate=(stat($picfile))[9]>(stat($0))[9]?(stat($picfile))[9]:(stat($0))[9]; + +untaint(\$red,'[\d\.]+','red must be a positive number'); +untaint(\$green,'[\d\.]+','green must be a positive number'); +untaint(\$blue,'[\d\.]+','blue must be a positive number'); + +untaint(\$shrink,'\d+','shrink must be a postiive integer'); + +if($shrink!=1 || $red!=1 || $green!=1 || $blue!=1) { + ($shrink>=1 && $shrink<=100) or cgierror("shrink must be between 1 and 100"); + $oldpicfile=$picfile; + + $picfile="/misc/pictures/cache/$filename-$shrink-$red-$green-$blue"; + if(! -f $picfile) { + $pic = new Image::Magick; + $pic->Read($oldpicfile); + $pic->Gamma( + red => $red, + green => $green, + blue => $blue); + $pic->Scale(width => $pic->Get("width")/$shrink, + height => $pic->Get("height")/$shrink); + $pic->Write($picfile); + undef $pic; + } +} + +open PIC,"<$picfile"; + +print $query->header(-"type" => "image/jpeg", + -"Last-Modified" => CGI::expires($lastdate-time,'http')); + +while() { + print; +} + +close PIC; + +sub cgierror { + print $query->header('text/html'); + print $query->start_html('Error!'); + print $query->h1('Error!'); + print shift; + print $query->end_html; + + + exit; +} + +sub untaint { + my ($var,$re,$error)=@_; + if($$var=~/^($re)$/) { + $$var=$1; + } else { + cgierror($error); + } +} addfile ./index.pl hunk ./index.pl 1 +#!/usr/bin/perl -wT + +use strict; +use CGI; + +use vars qw($query $range $desc $limit $base %descr $descrfile $lastdate); + +$descrfile="/misc/pictures/rawdigital/.descriptions"; + +$query=new CGI; + +sub cgierror { + print $query->header('text/html'); + print $query->start_html('Error!'); + print $query->h1('Error!'); + print shift; + print $query->end_html; + exit; +} + +$lastdate=(stat($descrfile))[9]>(stat($0))[9]? + (stat($descrfile))[9]:(stat($0))[9]; + +print $query->header(-"Last-Modified" => CGI::expires($lastdate-time,'http')); + +print $query->start_html(-"DTD" => "-//W3C//DTD HTML 3.2//EN", + -"TITLE" => "Digital Camera pictures" + ); + +open DESC,"<$descrfile" + or cgierror("Couldn't open descriptions file"); + +while() { + if(/^group ([\d\-]+) (.*)$/) { + $range=$1; + $desc=$2; + if ($range=~/^(\d+)\-(\d+)/) { + $base=$1; + $limit=$2; + } elsif($range=~/^(\d+)/) { + $base=$1; + $limit=$1; + } else { + next; + } + $descr{$base}="$limit: $desc"; + } +} + +print "

\n"; + +foreach $base (sort {$a <=> $b} (keys %descr)) { + $_=$descr{$base}; + ($limit,$desc)=/^(\d+): (.*)$/; + $desc =~ s/&/&/g; + $desc =~ s//>/g; + print $desc; + print ": "; + print ""; + print "Downwards"; + print "\n"; + print " "; + print ""; + print "Across"; + print "\n"; + print "
\n"; +} + + +print $query->end_html; + addfile ./range.pl hunk ./range.pl 1 +#!/usr/bin/perl -wT + +use strict; + +use CGI; + +use vars qw ($query $base $descrfile $lastdate $limit %descr $i $shrink + $red $green $blue %adjust $style); + +$query=new CGI; +$descrfile="/misc/pictures/rawdigital/.descriptions"; + + +sub cgierror { + print $query->header('text/html'); + print $query->start_html('Error!'); + print $query->h1('Error!'); + print shift; + print $query->end_html; + + exit; + +} + +$base=$query->param('base'); +$limit=$query->param('limit'); +$shrink=$query->param('shrink'); +$shrink=4 if(!defined $shrink); +$style=$query->param('style'); +$style="down" if(!defined $style); + +$lastdate=(stat($descrfile))[9]>(stat($0))[9]?(stat($descrfile))[9]:(stat($0))[9]; + +print $query->header(-"Last-Modified" => CGI::expires($lastdate-time,'http')); + +print "\n"; +print "\n\n" + . "Pictures $base-$limit\n" + . "\n\n" + . "\n\n" + . "\n\n"; + +if($style eq "down"){ + print ""; +} + +open DESC,"<$descrfile" + or cgierror("Couldn't open descriptions file"); + +while() { + /^describe (\d+) (.*)$/ && ($descr{$1}=$2); + /^adjust (\d+) ([\d\.]+) ([\d\.]+) ([\d\.]+)/ && ($adjust{$1}=[$2,$3,$4]); +} + + +foreach $i ($base..$limit) { + next if ! -f "/misc/pictures/rawdigital/P"."0" x (7-length($i)).$i.".JPG"; + ($red,$green,$blue)=(exists $adjust{$i})?@{$adjust{$i}}:(1,1,1); + + if($style eq "down") { + print ""; + print "\n"; + if(exists $descr{$i}) { + print ""; + } + print "\n"; + } +} + +if($style eq "down") { + print "
"; + } + print ""; + print ""; + print ""; + if($style eq "down") { + print "$descr{$i}
"; +} + +print "\n\n"; }