Solved

Get image data pointed to by a Resource id

Posted on 2002-03-08
4
341 Views
Last Modified: 2012-05-04
I am currently working on a gallery project.

I have written code to store clients photos in a Mysql database, which is all working okay.  I want to create a thumbnail on the fly which I do with the following code :-

$def_thumb_width=100;
$def_thumb_height=75;
$thumb_image_name= "t_" . $original_image_name;

$scaling_width=$original_image_width / $def_thumb_width;
$scaling_height=$original_image_height / $def_thumb_height;
if ($scaling_width > $scaling_height)
{
     $thumb_width=$original_image_width / $scaling_width;
     $thumb_height=$original_image_height / $scaling_width;
}
else
{
     $thumb_width=$original_image_width / $scaling_height;
     $thumb_height=$original_image_height / $scaling_height;
}
$thumb_width= ceil($thumb_width);
$thumb_height= ceil($thumb_height);

$im=imagecreatefromjpeg("$original_image");
$thumb=imagecreate($thumb_width,$thumb_height);
imagecopyresized($thumb,$im,0,0,0,0,$thumb_width,$thumb_height,$original_image_width,$original_image_height)

I have used fopen to open the original file in order to get the binary for the file. To prevent writing the data out to a file and reading it back again, I need to gain access to the data. $thumb will contain the image resource, and ImageJPEG($thumb) will output the data to the screen but I want it sent to my database instead.

In short how do I access data pointed to by a resource id.
0
Comment
Question by:waygood
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 40

Expert Comment

by:Richard Quadling
ID: 6864074
If you are storing the images in the database, then you may as well do it off line.

I use a program called ThumbsPlus on Windows. It can write to MySQL databases no problems.


But to answer your question, you can add a file name to

ImageJPEG($thumb,"/home/images/saved.jpg");

and then put that file in the database the same way you did the main image.

I cannot see a standard function to allow you to access the data directly.

BUT, what would happen if you sent the data to STDOUT (or something similar) and caught it via another program/script? No idea if possible.

Regards,

Richard Quadling.
0
 
LVL 9

Author Comment

by:waygood
ID: 6883571
I did capure the data as a work around using :-

     ob_start();
     Imagejpeg($thumb);
     
     $thumb_image_size=ob_get_length();
     $thumb_data=addslashes(ob_get_contents());
     ob_end_clean();

but fail to see why I need to output data and recapture it again through buffering of saving as a file. The data is there, I just need to access it.

P.S. I am writing this for people who are very stupid. They don't know how to deal with more than one program open at a time, let alone how to create thumbnails. I gave them Mihov's Image Resizer (freeware) and they complained when it doubled the number of images they had (extra thumbnails). Duh!
0
 
LVL 40

Accepted Solution

by:
Richard Quadling earned 75 total points
ID: 6885009
I agree with you that is seems that PHP does not give you full access to its objects. I am surprised that there is not a standard method for accessing the raw data, even in a readonly form.

As I mentioned earlier, ThumbsPlus will store the thumbnails into a database (even an MySQL database!).

It has scripting so that you can basically convert a whole load of images into thumbnails and store them in the database.

I can't think of anyother method for you. Offline conversion and storing in a DB would reduce the number of images to 1 extra file.

Ho hum!

Regards,

Richard Quadling.
0

Featured Post

Are You Using the Best Web Development Editor?

The worlds of web hosting and web development are constantly evolving. Every year we see design trends change, coding standards adapt and new frameworks/CMS created. With such a quick pace of change it’s easy to get lost trying to keep up.

See if your editor made the list.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

3 proven steps to speed up Magento powered sites. The article focus is on optimizing time to first byte (TTFB), full page caching and configuring server for optimal performance.
There are times when I have encountered the need to decompress a response from a PHP request. This is how it's done, but you must have control of the request and you can set the Accept-Encoding header.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

630 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question