在没有标题的php中将Blob显示为图像(“Content-type:image / jpg”);

时间:2010-02-26 10:48:46

标签: php mysql image blob

我将二进制数据从mySql数据库中拉出来,并希望将其显示为图像。

我不想为它显示图像创建一个单独的页面(这将涉及额外调用数据库等)

我只是希望能够做到

相当多,但$ Image变量采用longblob格式,我需要转换它。

提前谢谢。

5 个答案:

答案 0 :(得分:4)

我知道这不是您问题的具体答案,但请注意,通过删除该数据库调用,您将大幅增加服务器负载,增加每个页面的大小并降低网站的响应速度。

考虑任何页面堆栈溢出。其中大多数是动态的,因此页面无法缓存。但用户的缩略图是静态的,可以缓存。

如果您将缩略图作为数据URI发送,则您正在为每个页面上的每个缩略图执行数据库查找和数据传输。

如果您将其作为链接图像发送,则在首次加载图像时会产生单个数据库查找,从那时起它将被缓存(如果您使用它发送正确的HTTP标头),使您的服务器加载打火机,你的网站运行得更快!

答案 1 :(得分:3)

  

我不想为它显示单独的页面来显示图像

您可以对图像数据进行base64编码,并将其作为data URI直接包含在标记中。在大多数情况下,这不是一个好主意:

  • IE<不支持它8
  • 它(显然)大规模地扩大了HTML页面的大小。
  • 它会降低渲染速度,因为浏览器必须先加载资源才能完成HTML渲染

更好地构建一个单独的脚本,并进行一次额外的调用。

答案 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);

但这只会导致链接断开,无法解决我错过的内容