in reply to Image Size
To use just point the file path to the right function, like in the example. For SWF the function is good to get the Flash version!
my ($w , $h , $type , $version) = IMG_jpg_size('/tmp/splash.jpg') ; print ">> $w , $h , $type , $version\n" ; ################# # IMG_OPEN_FILE # ################# sub IMG_open_file { my ( $img_fl ) = @_ ; open(IMGSTRM, $img_fl) ; binmode( IMGSTRM ); return( \*IMGSTRM ); } ############### # IMG_READBUF # ############### sub IMG_readbuf { my $buf ; read(@_[0], $buf, @_[1]) ; return( $buf ) ; } ####### # JPG # ####### sub IMG_jpg_size { my($JPEG) = IMG_open_file(@_) ; my($done)=0; my($c1,$c2,$ch,$s,$length, $dummy)=(0,0,0,0,0,0); my($a,$b,$c,$d); if ( defined($JPEG) && ($c1 = &IMG_readbuf($JPEG,1)) && ($c2 = &IMG_readbuf($JPEG,1)) && ord($c1) == 0xFF && ord($c2) == 0xD8 ) { while (ord($ch) != 0xDA && !$done) { while (ord($ch) != 0xFF) { return('error') unless ($ch = &IMG_re +adbuf($JPEG,1)) ;} while (ord($ch) == 0xFF) { return('error') unless ($ch = &IMG_re +adbuf($JPEG,1)) ;} if ((ord($ch) >= 0xC0) && (ord($ch) <= 0xC3)) { return('error') unless ($dummy = &IMG_readbuf($JPEG,3)) ; return('error') unless ($s = &IMG_readbuf($JPEG,4)) ; ($a,$b,$c,$d)=unpack("C"x4,$s); return ($c<<8|$d, $a<<8|$b , 'jpg'); } else { return('error') unless ($s = &IMG_readbuf($JPEG,2)) ; ($c1, $c2) = unpack("C"x2,$s); $length = $c1<<8|$c2; last if (!defined($length) || $length < 2); $dummy = &IMG_readbuf($JPEG,$length-2); } } } return ('error'); } ####### # GIF # ####### sub IMG_gif_size { my($GIF) = IMG_open_file(@_) ; my($a,$b,$c,$d)=(0,0,0,0,0); my $type = &IMG_readbuf($GIF,6) ; my $s = &IMG_readbuf($GIF,4) ; if(defined( $GIF ) && $type =~ /GIF8[7,9]a/ && length($s) == 4 ) { ($a,$b,$c,$d)=unpack("C"x4,$s); return ($b<<8|$a,$d<<8|$c,'gif', "\L$type\E"); } return ('error'); } ####### # SWF # ####### sub IMG_swf_size { my($SWF) = IMG_open_file(@_) ; my $header = &IMG_readbuf($SWF,33) ; if (defined( $SWF ) && substr($header , 0 , 3) =~ /FWS/) { sub IMG_swf_bin2int { unpack("N", pack("B32", substr("0" x 32 . sh +ift, -32))); } my $ver = IMG_swf_bin2int(unpack 'B8', substr($header, 3, 1)); my $bs = unpack 'B133', substr($header, 8, 17); my $bits = IMG_swf_bin2int(substr($bs, 0, 5)); my $x = int(IMG_swf_bin2int(substr($bs, 5+$bits, $bits))/20); my $y = int(IMG_swf_bin2int(substr($bs, 5+$bits*3, $bits))/20); return ($x, $y , 'swf' , $ver); } return ('error'); } ####### # END # ####### 1;
Graciliano M. P.
"The creativity is the expression of the liberty".
|
|---|