Php : Convert a blob into an image file

前端 未结 4 618
醉酒成梦
醉酒成梦 2020-11-29 09:23

Is this possible with php and a mysql database to Convert a blob into an image file?

相关标签:
4条回答
  • 2020-11-29 09:57

    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.

    0 讨论(0)
  • 2020-11-29 10:03

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

    Note, the echo <img> 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.

    GD:

    $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();
    ob_end_clean();
    echo '<img src="data:image/jpg;base64,' .  base64_encode($data)  . '" />';
    

    ImageMagick (iMagick):

    $image = new Imagick();
    $image->readimageblob($blob);
    echo '<img src="data:image/png;base64,' .  base64_encode($image->getimageblob())  . '" />';
    

    GraphicsMagick (gMagick):

    $image = new Gmagick();
    $image->readimageblob($blob);
    echo '<img src="data:image/png;base64,' .  base64_encode($image->getimageblob())  . '" />';
    
    0 讨论(0)
  • 2020-11-29 10:09

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

    • Tutorial on how to store images in Mysql BLOB field

    Look at the following part from above article:

    <?php
    if(isset($_REQUEST['id']))
    {
       // get the file with the id from database
          include "dbconfig.php";
          $dbconn = mysql_connect($dbhost, $dbusr, $dbpass) or die("Error Occurred-".mysql_error());
          mysql_select_db($dbname, $dbconn) or die("Unable to select database");
    
          $id    = $_ REQUEST ['id'];
          $query = "SELECT `img_name`, `img_type`, `img_size`, `img_data`
                           FROM img_tbl WHERE id = ‘$id’";
    
          $result = mysql_query($query) or die(mysql_error());
          list($name, $type, $size, $content) = mysql_fetch_array($result);
    
          header("Content-length: $size");
          header("Content-type: $type");
          print $content;
    
          mysql_close($dbconn);
    }
    ?>
    
    0 讨论(0)
  • 2020-11-29 10:22

    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;
       die($message);
    }
    
    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));
       fclose($file);
    
       // option 2 (oneliner)
       // file_put_contents($path."/".$name, base64_decode($image));
    }
    
    0 讨论(0)
提交回复
热议问题