我将二进制数据从mySql数据库中拉出来,并希望将其显示为图像。
我不想为它显示图像创建一个单独的页面(这将涉及额外调用数据库等)
我只是希望能够做到
相当多,但$ Image变量采用longblob格式,我需要转换它。
提前谢谢。
答案 0 :(得分:4)
我知道这不是您问题的具体答案,但请注意,通过删除该数据库调用,您将大幅增加服务器负载,增加每个页面的大小并降低网站的响应速度。
考虑任何页面堆栈溢出。其中大多数是动态的,因此页面无法缓存。但用户的缩略图是静态的,可以缓存。
如果您将缩略图作为数据URI发送,则您正在为每个页面上的每个缩略图执行数据库查找和数据传输。
如果您将其作为链接图像发送,则在首次加载图像时会产生单个数据库查找,从那时起它将被缓存(如果您使用它发送正确的HTTP标头),使您的服务器加载打火机,你的网站运行得更快!
答案 1 :(得分:3)
我不想为它显示单独的页面来显示图像
您可以对图像数据进行base64编码,并将其作为data URI直接包含在标记中。在大多数情况下,这不是一个好主意:
更好地构建一个单独的脚本,并进行一次额外的调用。
答案 2 :(得分:2)
您可以使用Base64编码的数据URI执行此操作。
我不确定是否可以直接进入img-tag,但你可以通过为div设置背景图像来实现。
基本上你改变了常规
.smurfette {
background: url(smurfette.png);
}
到
.smurfette {
background: url(data:image/png;base64,iVBORw0KGgo [...] P6VAAAAAElFTkSuQmCC);
}
支持数据URI:
* Firefox 2+
* Safari – all versions
* Google Chrome – all versions
* Opera 7.2+
* Internet Explorer 8+
来自Robert Nyman的信息:http://robertnyman.com/2010/01/15/how-to-reduce-the-number-of-http-requests/
答案 3 :(得分:0)
$ _将结果输入一个单独的变量,即$ myvar = $ _GET ['Id'];在处理$ imageResult行之前,例如:
$ myid = $ _GET ['Id'];
$ ImageResult =“选择播放器中的player.Image,其中Id ='$ myid'”;
答案 4 :(得分:-1)
感谢您的回答,我决定使用单独的GetImage.php页面,但现在似乎无法完成最简单的任务
$ImageResult = "select player.Image from player where Id = " . $_GET['Id'];
$result = mysql_query($ImageResult) or die ("data recovery failed -3");
header("Content-type: image/jpeg");
echo mysql_result($result, 0);
但这只会导致链接断开,无法解决我错过的内容