Solved

Get image data pointed to by a Resource id

Posted on 2002-03-08
4
334 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
  • 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

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
PHP Sessions in WordPress 8 31
PHP populating an array. 4 24
preventing spam with mailto 22 31
Cpanel file manager 8 23
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
The viewer will learn how to count occurrences of each item in an array.
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…

776 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