如何使用PHP从MySQL数据库中读取图像?

时间:2011-01-22 21:48:54

标签: php mysql image

如何使用PHP从MySQL数据库中读取图像?

如果图像存储在数据库中的BLOB中,如何使用我获得的二进制数据并使用src将其转换为图像 <img>或使用CSS属性background-image

感谢。

2 个答案:

答案 0 :(得分:3)

要直接将二进制数据用作图像源,您可以使用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

答案 1 :(得分:1)

如果将图像存储为BLOB,您可能应该做的是提供一个URL,以一种可以确定要返回的图像的方式调用脚本。

将该URL用作srcbackground-image: url(...),并在脚本中,将数据库中的BLOB读取到变量中。

然后在适当的标题信息之后输出变量,告诉浏览器它将接收图像,例如:

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

发送Content-Length标题以及有关缓存/到期的明智信息也是明智之举。


NB。说了这么多,我倾向于警惕在数据库中使用BLOB,它们往往会削弱性能。当我想存储图像时,我会存储在一些目录结构中,并以某种方式在数据库中引用它们。