如何在php中将BLOB变量显示为图片


How can I dispaly BLOB variables as pictures in php

我需要帮助解决这个问题。我已经将我的图片作为blob存储在mysql数据库中,当我尝试运行此代码从数据库中检索数据时,图片显示为字符穿孔,但其他数据类型工作正常。我认为浏览器不知道数据是图片。如何在此代码中将blob转换为图片。

<?php
    include_once('db.php');
    if(isset($_POST['personID'], $_POST['fName'], $_POST['lName'], $_POST['title'], $_POST['pic']))
    {
      $personID= $_POST['personID'];
      $fName= $_POST['fName'];
      $lName= $_POST['lName'];
      $title= $_POST['title'];
      $pic= $_POST['pic'];
      if(mysql_query("INSERT INTO samidb.persons VALUES ('$personID','$fName', '$lName', '$title',     '$pic')"))
        echo "Successful Insertion!";
      else
        echo "Please try again";
    }

$res = mysql_query("SELECT * FROM samidb.persons");
?>
<html>
<head>
<style type="text/css">
 li { list-style-type: none; display: inline-block; padding: 10px; text-align: center;}
//li:hover { background-color: yellow; }
</style>
</head>
<body>
<form action="." method="POST">
person ID: <input type="text" name="personID"/><br />
First Name: <input type="text" name="fName"/><br />
Last Name: <input type="text" name="lName"/><br />
title: <input type="text" name="title"/><br />
pic: <input type="image" name="pic"/><br />
<input type="submit" value=" Enter "/>
</form>
<h1>List from database ..</h1>
<ul>
<?php
    while( $row = mysql_fetch_array($res) )
    echo "<li>$row[personID]. <li>$row[fName]  <li>$row[pic]</li> 
            <li><a href='edit.php?edit=$row[personID]'>edit</a></li>
            <li><a href='delete.php?del=$row[personID]'>delete</a></li><br />";
?>
</ul>
</body>
</html>

大多数人只存储图像的路径。这很容易,它将数据保存在文件系统中,为这类事情构建,它减少了数据库大小等。

然而,您应该能够将其用作内联图像,通常以64为基础进行编码,如下所述:

嵌入Base64图像

仅供参考,我使用以下代码进行了测试:

<img src="data:image/png;base64,<?php echo base64_encode (file_get_contents('./screenshot.png')); ?>" />

你可能会做一些类似的事情:

<img src="data:image/png;base64,<?php echo base64_encode ($row['pic']); ?>" />