Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,如何使用HTML内容显示数据库中BLOB字段中的各种图像?_Php_Image_Sqlite_Blob_Transform - Fatal编程技术网

在PHP中,如何使用HTML内容显示数据库中BLOB字段中的各种图像?

在PHP中,如何使用HTML内容显示数据库中BLOB字段中的各种图像?,php,image,sqlite,blob,transform,Php,Image,Sqlite,Blob,Transform,我使用BLOB字段将它的图像存储在数据库中(我使用的是SQLite)。现在我想把这个图像恢复到一个HTML页面,并在那里显示图像 我可以从数据库的图像中检索二进制数据,但是我可以做什么来将这些数据转换成图像并显示在页面中呢?目前,我想在表中的字段中显示图像。您可以创建一个简单的image.php页面来查询数据库,然后打印出与图像相关的内容类型,并将二进制数据发送到屏幕。因此,在您的表中,您将有,然后在image.php页面中使用该id进行数据库查找,检索二进制数据,并在打印内容类型标题后将其打印

我使用BLOB字段将它的图像存储在数据库中(我使用的是SQLite)。现在我想把这个图像恢复到一个HTML页面,并在那里显示图像


我可以从数据库的图像中检索二进制数据,但是我可以做什么来将这些数据转换成图像并显示在页面中呢?目前,我想在表中的字段中显示图像。

您可以创建一个简单的image.php页面来查询数据库,然后打印出与图像相关的内容类型,并将二进制数据发送到屏幕。因此,在您的表中,您将有
,然后在image.php页面中使用该id进行数据库查找,检索二进制数据,并在打印内容类型标题后将其打印到屏幕上

image.php:

<?php

header('Content-type: image/jpeg');

//DO SQL NINJA STUFF HERE

echo mysql_result($result,0,"file_content");

您可能会滥用
数据:
协议,但是相信我,如果您可以避免的话,您不会希望这样。通常,您会创建一个单独的php脚本来提供图像,因此在脚本1中:

 <img src="/myimagescript.php?id=1234">

通常,这是通过创建一个包装器脚本或函数来完成的,该脚本或函数检索BLOB并将其与用作

通过这种方式还可以根据PHP确定的其他身份验证因素提供或不提供图像。例如,如果用户没有查看图像的权限,您可以在其位置显示一些默认图像或阻止图像

// File getimg.php
// Retrieve the image blob specified by $_GET['imgid'] from the database

// Assuming your blob is now in the variable $image...
header("Content-type: image/jpeg");
// Just echo out the image data
echo $image;
exit();
现在在您的html中:

<img src='getimg.php?imgid=12345' alt='this is your img from the database' />

我想说有两种选择:

  • 创建一个返回图像数据的脚本。然后,
    -字段调用该脚本
  • 您可以直接通过一个数据库提供图像数据
  • 两者都有利弊。对于第一个解决方案,必须为图像创建一个新脚本。如果图像较大,第二种方法会使页面膨胀

    由于已经有图像脚本方法的示例,下面是一些数据URI的代码片段:

    <?php
    function data_uri($content, $mime) 
    {  
      $base64   = base64_encode($content); 
      return ('data:' . $mime . ';base64,' . $base64);
    }
    ?>
    
    <img src="<?php echo data_uri($content,'image/png'); ?>" />
    
    
    " />
    

    您需要根据您的图像设置mime类型,
    image/png
    用于png图像,
    image/jpeg
    用于JPG文件等,请参阅。

    @uscere90是正确的,但示例可能会有所帮助(png图像示例):

    
    
    Wow,你在与我相同的时间提交了一个几乎相同的答案。你确实看到了,
    0秒前,
    0秒前,
    这两个答案都很奇怪:)很难选择最佳答案,但现在我知道如何解决这个问题了。谢谢大家。
    <?php
    function data_uri($content, $mime) 
    {  
      $base64   = base64_encode($content); 
      return ('data:' . $mime . ';base64,' . $base64);
    }
    ?>
    
    <img src="<?php echo data_uri($content,'image/png'); ?>" />
    
    <?php
      header("Content-type: image/png");
      echo $image_data;
    ?>