Re: get image size from binary data

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&...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 06-26-2007
Armand Brahaj
 
Posts: n/a
Default Re: get image size from binary data

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
Reply With Quote
  #2 (permalink)  
Old 06-27-2007
Christoph Burschka
 
Posts: n/a
Default Re: get image size from binary data

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

Reply With Quote
  #3 (permalink)  
Old 06-27-2007
peter
 
Posts: n/a
Default Re: get image size from binary data


> 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.


Reply With Quote
  #4 (permalink)  
Old 06-28-2007
Christoph Burschka
 
Posts: n/a
Default Re: get image size from binary data

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
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 07:31 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0