Jump to content

Archived

This topic is now archived and is closed to further replies.

michaellunsford

how to create string from image?

Recommended Posts

Okay, here's a fun challenge. Users are uploading files of who knows what resolution. I am resizing them in PHP, but instead of dumping them to a file on the hard drive, i want to put them in a database.

At first I thougth this was very simple, but it appears that imagejpeg, imagegif, imagepng, etc, only dumps directly to a browser or file -- it won't return the image as a string. I've also tried referring to the image pointer [code]$im=imagecreatefromstring(file_get_contents($_FILES['userfile']['tmp_name']));
... resize image ...
mysql_query("INSERT INTO `table` (`image`) VALUES ('".mysql_real_escape_string($im)."')");[/code] without success

It looks like I will need to write the image to a file, then reload the file using file_get_contents. Is there a shorter method?

Thanks!

Share this post


Link to post
Share on other sites
Use blob as the data type.

Example script - [a href=\"http://www.wellho.net/solutions/php-example-php-form-image-upload-store-in-mysql-database-retreive.html\" target=\"_blank\"]http://www.wellho.net/solutions/php-exampl...e-retreive.html[/a]

Share this post


Link to post
Share on other sites
The database works great if I don't resize the images (using mediumblob for the data type). The problem arises when I resize the images to 640x480. I can display or save the image to the hard drive -- but I'm having difficulty injecting it into mysql.

Once I've captured and resized the file, I could save it to the hard drive, then reopen it using file_get_contents() -- but that seems like a really long way around.

Looking for the right shortcut.

Thanks!

Share this post


Link to post
Share on other sites
update:

I have applied the workaround -- which works great. PHP is now creating a temporary image in the /tmp/ folder, then reimporting it using file_get_contents. If anyone knows of a way to remove this step, they would be my hero.
[code]$im=imagecreatefromstring(file_get_contents($_FILES['userfile']['tmp_name']));
... resize image ...
imagepng($im,"/tmp/tempimage.png");
mysql_query("INSERT INTO `table` (`image`) VALUES ('".mysql_real_escape_string(file_get_contents("/tmp/tempimage.png"))."')");[/code]

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.