Jump to content

how to create string from image?


michaellunsford

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!
Link to comment
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]
Link to comment
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!
Link to comment
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]
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

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.