显示保存为斑点图像的图像时出现问题

时间:2019-01-20 22:05:36

标签: php html5 mysqli

am在显示以blob形式存储在我的数据库中的图像时遇到问题,因为图像不显示而是显示了疯狂的字符和符号,我试图更改php的标签,但无济于事。帮助,这是我的代码:请注意,我希望将所有类型的图像另存为blob(jpg,jpeg,gif,svg,png)-预先感谢

    <?php
        include 'include/connect.php';
        $sql = "SELECT * FROM room_details ORDER BY id ASC LIMIT 2, 1;";
        $result = mysqli_query($conn, $sql);
        if (mysqli_num_rows($result) > 0) {
          while($row = mysqli_fetch_assoc($result)) {

    ?>


        <div class="room-thumb"><?php echo '<img alt="room 3" class="img-responsive" src="data:image;base64,'.$row['image'].'">'; ?>
            <div class="mask">
              <div class="main">
                <h5><?= $row['room_type']; ?></h5>
                <div class="price"><?= $row['room_name']; ?><span>a night</span></div>
              </div>

                <a href="room-detail.html" class="btn btn-primary btn-block">Read More</a>
              </div>
          </div>

          } ?>

1 个答案:

答案 0 :(得分:1)

由于Blob网址是使用base64解码的,因此您需要先对其进行编码。您可以使用 JavaScript PHP 来做到这一点。

JavaScript:

使用JavaScript,您可以仅使用atob()函数对base64网址进行编码,如下所示:

<script>
  var x = <?php echo $row['image'] ?>
  document.getELementById("code").innerHTML = atob(x);
</script>

<div class="room-thumb"><?php echo '<img alt="room 3" class="img-responsive" src="data:image;base64,' ?><span id="code"></span><?php echo '">'; ?>
    <!-- DIV CONTENT HERE -->
</div>

但是,正如在其他SO thread中所述,如果您使用PHP本身或其他JavaScript方法(在同一线程中提到)来检索和编码base64 url​​,则这是一种更好的方法,因为上述方法是不安全。


PHP:

使用PHP,您可以先对base64网址进行编码,然后再将其输出到HTML中,如下所示:

<?php echo '<img alt="room 3" class="img-responsive" src="data:image;base64,' . base64_encode(.$row['image']).'">'; ?>

或者您可以创建一个新的php文件,对该文件中的PHP进行编码,然后将编码后的base64 url​​回显到您的HTML,如下所示:

    <!-- PHP file -->
    <?php
      $id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
      $image = base64_encode(getImageFromDatabase($id)); // your code to fetch the image
    
      header('Content-Type: image/jpeg');
      echo $image;
    ?>

    <!-- HTML -->
    <img src="image.php?id=<?php echo $image_id; ?>" />


请查看其他SO thread中可接受的答案,以更深入地解释上述两种PHP方法。