If you reaaaaaaaally don't like the text jumping you can do a little script
that can parse the width and height for each image, I mean get this info
from the html files... But you will have to pin point each one... The good
thing that the script is here...
<? #################################################
## GetURLImageSize( $urlpic ) determines the
## dimensions of local/remote URL pictures.
## returns array with ( $width,$height,$type )
##
## Thanks to: Oyvind Hallsteinsen aka Gosub / ELq - [EMAIL PROTECTED]
## for the original size determining code
##
## PHP Hack by Filipe Laborde-Basto Oct 21/2000
## FREELY DISTRIBUTABLE -- use at your sole discretion! :) Enjoy.
## (Not to be sold in commercial packages though, keep it free!)
## Feel free to contact me at [EMAIL PROTECTED] (http://www.rezox.com)
#################################################
define(GIF_SIG, "\x47\x49\x46");
define(JPG_SIG, "\xff\xd8\xff");
define(PNG_SIG, "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a");
define(JPG_SOF0, "\xc0"); /* Start Of Frame N */
define(JPG_SOF1, "\xc1"); /* N indicates which compression process */
define(JPG_SOF2, "\xc2"); /* Only SOF0-SOF2 are now in common use */
define(JPG_SOF3, "\xc3");
define(JPG_SOF5, "\xc5"); /* NB: codes C4 and CC are NOT SOF markers */
define(JPG_SOF6, "\xc6");
define(JPG_SOF7, "\xc7");
define(JPG_SOF9, "\xc9");
define(JPG_SOF10, "\xca");
define(JPG_SOF11, "\xcb");
define(JPG_SOF13, "\xcd");
define(JPG_SOF14, "\xce");
define(JPG_SOF15, "\xcf");
define(JPG_EOI, "\xd9"); /* End Of Image (end of datastream) */
define(JPG_SOS, "\xda"); /* Start Of Scan - image data start */
define(RD_BUF, 512); /* amount of data to initially read */
function GetURLImageSize( $urlpic
$fd= @fopen($urlpic,"r");
fd){
#read in 1k, enough for GIF,PNG.
#continue to read from file, if the JPG chunk exceeds this
$imgData = fread( $fd,RD_BUF );
if( substr($imgData,0,3)==GIF_SIG
$dim =unpack ("v2dim",substr($imgData,6,4) );
$width=$dim["dim1"]; $height=$dim["dim2"];
$type = 1;
} elseif( substr($imgData,0,8)==PNG_SIG
$dim =unpack ("N2dim",substr($imgData,16,8) );
$width=$dim["dim1"]; $height=$dim["dim2"];
$type = 3;
} elseif( substr($imgData,0,3)==JPG_SIG
################# JPG CHUNK SCAN ####################
$imgPos = 2; $type = 2; $buffer = RD_BUF-2;
while($imgPos < strlen($imgData))
/* synchronize to the marker 0xFF */
$imgPos=strpos(&$imgData,0xFF,$imgPos)+1;
$marker = $imgData[$imgPos];
do { $marker = ord($imgData[$imgPos++]); } while ($marker ==
255);
/* find dimensions of block */
switch (chr($marker))
/* Grab width/height from SOF segment (these are acceptable
chunk types) */
case JPG_SOF0: case JPG_SOF1: case JPG_SOF2:
case JPG_SOF3: case JPG_SOF5: case JPG_SOF6:
case JPG_SOF7: case JPG_SOF9: case JPG_SOF10:
case JPG_SOF11: case JPG_SOF12: case JPG_SOF13:
case JPG_SOF14: case JPG_SOF15:
$dim =unpack ("n2dim",substr($imgData,$imgPos+3,4) );
$height=$dim["dim1"]; $width=$dim["dim2"];
break 2; file://found it so exit
case JPG_EOI:
case JPG_SOS:
return FALSE; /* End loop in case we find one of these
markers */
default: /* We're not interested in other markers */
$skiplen =
(ord($imgData[$imgPos++])<<8)+ord($imgData[$imgPos++])-2;
/* if the skip is more than what we've read in, read more */
$buffer -= $skiplen;
if( $buffer<512 ){ #if the buffer of data is too low,read more
file.
$imgData .= fread( $fd,$skiplen+1024 );
$buffer += $skiplen+1024;
};
$imgPos += $skiplen;
break;
}; file://endif check marker type
}; file://endif loop through JPG chunks
}; file://endif chk for valid file types
# got the pic dimensions, close the file
fclose ($fd);
return array( $width,$height,$type );
} else
return array( '','','' );
}; file://endif valid file pointer chk
}; // end function
?>
Rom
----- Original Message -----
From: Sue Bailey <[EMAIL PROTECTED]>
To: Romulo Roberto Pereira <[EMAIL PROTECTED]>
Cc: php-general <[EMAIL PROTECTED]>
Sent: Sunday, January 21, 2001 10:35 AM
Subject: Re: [PHP] GetImageSize problem
Thanks Rom - I can get the pics with an img src tag, which is why I
assumed that GetImageSize would also work - but now I'm told it only
works on the local machine, so I guess I'll have to live with text
jumping about while pics download. :(
Romulo Roberto Pereira wrote:
>
> Hello!
>
> First - some ISP block you from get files from their server by a httpd
> request (that is what php does... I think!). To be sure if this is set or
> not, in the other ISP (not the one that the images are) write a simple
html
> like this:
>
> <html><head><title>loading images between servers</title></head><body>
> <br><br>
> <img src="http://Domain/ImagesDir/ImagesName.gif">
> </body></html>
>
> In "http://Domain/ImagesDir/ImagesName.gif" be sure to put the correct
> domain and location of the image.
>
> This should show the image... If not you could have two problems: the link
> is wrong or the filter is set.
>
> Imagine this - I have a web site in an ISP with my domain like:
> http://www.mydomain.com and all the paths are gting the images from a free
> server like geocities.com so I don;t expend money on buying large amounts
of
> bandwith for my site... If you think this way you know why they do that.
>
> if this works, just use thi path "http://Domain/ImagesDir/ImagesName.gif"
in
> all your scripts for getimagesize...
>
> I expect that this helps.
>
> Rom
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]