This is a discussion on Re: get image size from binary data within the PHP Language forums, part of the PHP Programming Forums category; james.gauth@googlemail.com wrote: > On 26 Jun, 08:31, Christoph Burschka <christoph.bursc...@rwth- > aachen.de&...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
james.gauth@googlemail.com wrote:
> On 26 Jun, 08:31, Christoph Burschka <christoph.bursc...@rwth- > aachen.de> wrote: >> Is there some way to get the dimensions of an image, given the binary >> data of the image, without having to write it to a temporary file? >> >> It seems that getimagesize() will only take a filename, but since I have >> to download the image from a remote URL with fsockopen(), I have it >> stored as a binary string. >> >> I've had a cursory glance at the data, but predictably the size is not >> stored in decimal format anywhere... >> >> -- >> cb > > If the image format is supported by your GD Library, you can use the > following: > > <?php > > $binary_data = file_get_contents('http://www.google.co.uk/intl/en_uk/ > images/logo.gif'); > > $im = imagecreatefromstring($binary_data); > > $width = imagesx($im); > $height = imagesy($im); > > print "width: $width\n"; > print "height: $height\n"; > > ?> > Someone correct me if I am wrong, but whenever you open an image/file to read (even if you want to read the headers) you are storing it to some temporary buffer/space on your machine! Maybe the GD solution above is the best! Armand |
|
|||
|
Armand Brahaj wrote:
> james.gauth@googlemail.com wrote: >> On 26 Jun, 08:31, Christoph Burschka <christoph.bursc...@rwth- >> aachen.de> wrote: >>> Is there some way to get the dimensions of an image, given the binary >>> data of the image, without having to write it to a temporary file? >>> >>> It seems that getimagesize() will only take a filename, but since I have >>> to download the image from a remote URL with fsockopen(), I have it >>> stored as a binary string. >>> >>> I've had a cursory glance at the data, but predictably the size is not >>> stored in decimal format anywhere... >>> >>> -- >>> cb >> >> If the image format is supported by your GD Library, you can use the >> following: >> >> <?php >> >> $binary_data = file_get_contents('http://www.google.co.uk/intl/en_uk/ >> images/logo.gif'); >> >> $im = imagecreatefromstring($binary_data); >> >> $width = imagesx($im); >> $height = imagesy($im); >> >> print "width: $width\n"; >> print "height: $height\n"; >> >> ?> >> > > Someone correct me if I am wrong, but whenever you open an image/file to > read (even if you want to read the headers) you are storing it to some > temporary buffer/space on your machine! > Maybe the GD solution above is the best! > > Armand Yeah, so I'd be downloading the image data, saving it to a temporary file, reading the temp file into the buffer and getting the header. Not exactly efficient. Thanks for imagecreatefromstring(); that was exactly the function I was looking for! -- cb |
|
|||
|
> Yeah, so I'd be downloading the image data, saving it to a temporary > file, reading the temp file into the buffer and getting the header. Not > exactly efficient. > > Thanks for imagecreatefromstring(); that was exactly the function I was > looking for! How else do you expect a system to know details of files on other systems without downloading them? I have a book beside me how many pages has it got, what is the author and what is the title? This is basically what you are wanting your script to do. |
|
|||
|
peter schrieb:
>>Yeah, so I'd be downloading the image data, saving it to a temporary >>file, reading the temp file into the buffer and getting the header. Not >>exactly efficient. >> >>Thanks for imagecreatefromstring(); that was exactly the function I was >>looking for! > > > How else do you expect a system to know details of files on other systems > without downloading them? > > I have a book beside me how many pages has it got, what is the author and > what is the title? This is basically what you are wanting your script to do. > > To complete the analogy, you open the book and count the pages. You do not xerox the book page by page, then open the copy. ;) It doesn't matter if fsockopen(url) -> imagecreatefromstring() -> imagesx() uses temporary files (a process I can't influence anyway), fsockopen() -> fwrite() -> getimagesize() is likely to use one more. Even if they are equally efficient, the first method handles it in the background without making me juggle files in my own code, removing a frequent source of bugs. -- cb |