如何使用PHP从MySQL数据库读取图像?如何使用PHP从MySQL数据库读取图像?
如果图像存储在一个BLOB在数据库中,如何使用,我得到的二进制数据和 <img>
或使用CSS属性background-image
把它变成使用src
的形象呢?
谢谢。
如何使用PHP从MySQL数据库读取图像?如何使用PHP从MySQL数据库读取图像?
如果图像存储在一个BLOB在数据库中,如何使用,我得到的二进制数据和 <img>
或使用CSS属性background-image
把它变成使用src
的形象呢?
谢谢。
要直接使用二进制数据作为图像源,则可以使用data URI scheme,例如:
$uri = 'data:image/png;base64,'.base64_encode($row['binary-data']);
这个URI然后可以直接用作图像的源:
background-image: url(<?php echo $uri; ?>)
<img src="<?php echo $uri; ?>">
但这有一些实质性的缺点:除了这些数据缺少支持旧版浏览器中的URI,data URIs do also have disadvantaged regarding payload, caching, and references。
如果将图像存储为BLOB,您应该怎么做才能提供一个URL,以便可以确定要返回的图像的方式调用脚本。
使用该URL作为src
或background-image: url(...)
,并在脚本中将BLOB从数据库读取到变量中。
然后输出经过适当的头信息中的变量,告诉浏览器是为接收图像,例如:
header('Content-Type: image/jpeg');
发送Content-Length
报头和关于缓存敏感信息/终止也将是明智的。
NB。说了这么多,我倾向于在数据库中使用BLOB,但往往会削弱性能。当我想存储图像时,我将其存储在某个目录结构中,并以某种方式在数据库中引用它们。
非常感谢,我得到了的概念,但仍然缺少我从src调用的脚本中会发生的事情。 – eomeroff 2011-01-22 22:01:43
认真考虑将图像作为BLOB移出数据库,并将它们本地存储在文件系统中。如果多台机器需要访问相同的映像,请考虑跨计算机挂载的共享资源。 – 2011-01-23 02:19:08
好的谢谢了很多------------------------------------- – eomeroff 2011-01-23 11:55:19