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