php convert a blob into an image file

php convert a blob into an image file  using -'php,mysql,image,blob'

asked Oct 6, 2015 by sameer rathore
0 votes

4 Answers

0 votes

If the BLOB contains the binary data of an image (in a recognizable format like e.g. tiff, png, jpeg, etc), take the content of the BLOB, write it to a file, and voilà... you got an image.

On some strange operation systems you have to give the output file a correspondig extension, so that the image file can be recognised as such.

answered Oct 6, 2015 by ashish singh
0 votes

You can use a few different methods depending on what php image library you have installed. Here's a few examples.

Note, the echo is just a trick I use to display multiple images from the same php script when looping through a MySQL result resource. You could just as well output via header() as @NAVEED had shown.


$image = imagecreatefromstring($blob); 

ob_start(); //You could also just output the $image via header() and bypass this buffer capture.
imagejpeg($image, null, 80);
$data = ob_get_contents();
echo '';

ImageMagick (iMagick):

$image = new Imagick();
echo '';

GraphicsMagick (gMagick):

$image = new Gmagick();
echo '';
answered Oct 6, 2015 by vijaygupta1980
0 votes

In my case i had to use base64_decode to convert blob images correctly into file.

$path = "/tmp/images";
$sql = "SELECT image_name, image_content FROM images";

$result = mysql_query($sql, $db_con);
if (!$result) {
   $message  = 'Invalid query: ' . mysql_error() . "\n";
   $message .= 'Whole query: ' . $sql;

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
   $image = $row["image_contents"];
   $name = $row["image_name"];

   // option 1
   $file = fopen($path."/".$name,"w");
   echo "File name: ".$path."$name\n";
   fwrite($file, base64_decode($image));

   // option 2 (oneliner)
   // file_put_contents($path."/".$name, base64_decode($image));
answered Oct 6, 2015 by vijaygupta1980
0 votes

If you are storing images in MySql table Blob field and want to get these images then this article is useful for you:

Look at the following part from above article:

answered Oct 6, 2015 by sachin valanju