michaellunsford Posted April 20, 2006 Share Posted April 20, 2006 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 successIt 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! Quote Link to comment Share on other sites More sharing options...
AndyB Posted April 20, 2006 Share Posted April 20, 2006 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] Quote Link to comment Share on other sites More sharing options...
michaellunsford Posted April 20, 2006 Author Share Posted April 20, 2006 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! Quote Link to comment Share on other sites More sharing options...
michaellunsford Posted April 21, 2006 Author Share Posted April 21, 2006 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] Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.