Hallo !
Hab lange gesucht und doch gefunden. :-))
Der Byte-Ansatz von Tom hat mich dazugebracht ein Script zu suchen, was diesem Lösungsansatz gerecht wird.
Ich fand ein Script, welches zufällig vorh. Bilder (gif und jpg) per SSI rauswirft, und wie in der Beschreibung bemerkt wurde, mit Angabe der Größe!!
Hier der modifizierte Teil:
#!/usr/bin/perl
##################################################
##################################################
print "Content-Type: text/html\n\n" ;
$picname="/servers/inter/domain/www/sm/file_up/18banner.jpg";
if ($picname =~ /.gif/i) {
open (GIF , "<$picname") ;
undef $/;
$gifs=<GIF> ;
close(GIF) ;
($width,$height)=&gifsize($gifs) ;
$fsize=length($gif);
} elsif ($picname =~ /.jpg/i) {
open (JPG , "$picname") ;
undef $/;
$jpg=<JPG> ;
close(JPG) ;
$pic_temp="$$picname";
($width,$height)=&jpegsize($jpg) ;
$fsize=length($jpg);
}
print "width: $width<br>";
print "height: $height<br>";
print "size: $fsize<br>";
exit;
############################################################################
GIF
############################################################################
sub gifsize {
my ($GIF)=@_;
my ($type,$a,$b,$c,$d,$s,$width,$height) ;
$type=substr($GIF,0,6);
if(!($type =~ m/GIF8[7,9]a/) (length($s=substr($GIF, 6, 4))!=4) ){
return;
}
($a,$b,$c,$d)=unpack("C"x4,$s);
$width= $b<<8$a;
$height= $d<<8$c;
return ($width,$height);
}
############################################################################
JPG
############################################################################
sub jpegsize {
my ($JPEG)=@ _ ;
my ($count)=2 ;
my ($length)=length($JPEG) ;
my ($ch)="" ;
my ($c1,$c2,$a,$b,$c,$d,$width,$height) ;
while (($ch ne "\xda") && ($count<$length)) {
while (($ch ne "\xff") && ($count < $length)) {
$ch=substr($JPEG,$count,1);
$count++;
}
while (($ch eq "\xff") && ($count<$length)) {
$ch=substr($JPEG,$count,1);
$count++;
}
if ((ord($ch) >= 0xC0) && (ord($ch) <= 0xC3)) {
$count+=3;
($a,$b,$c,$d)=unpack("C"x4,substr($JPEG,$count,4));
$width=$c<<8$d;
$height=$a<<8$b;
return($width,$height);
} else {
($c1,$c2)= unpack("C"x2,substr($JPEG,$count,2));
$count += $c1<<8$c2;
}
}
}
############################################################################
Vielen Dank an Euch.
Jörg