正确的标题php mysql blob显示图像

时间:2013-12-21 00:43:38

标签: php ios image http-headers blob

我试图在我的PHP页面中显示来自mysql blob的图像(我知道它不是最佳实践),然后我会将其带入我的iOS应用程序。

我在设置页面标题时遇到问题,我认为需要将其设置为图像。

所以,这显示了图像,但我不相信页眉是正确的:

    //header("Content-type: image/png");
echo '<img src="data:image/png;base64,' . base64_encode( $row['image1'] ) . '" />';

然而,这并没有显示我的形象:

    header("Content-type: image/png");
echo '<img src="data:image/png;base64,' . base64_encode( $row['image1'] ) . '" />';

我错过了什么?我相信图片应该在标题设置为image / png时显示,但是我收到错误,因为错误而无法显示。

谢谢!

1 个答案:

答案 0 :(得分:3)

header("Content-type: image/png");

这告诉您的浏览器您将要传递的原始二进制数据是PNG文件。因此,之后的任何输出都必须是二进制PNG。你不能放置HTML并希望它能够工作

echo '<img src="data:image/png;base64,' . base64_encode( $row['image1'] ) . '" />';

这是有效的,因为你是对图像进行base64编码(将二进制文件翻译成文本),将其输出到浏览器,然后告诉浏览器将其解释为base64。

如果要输出原始二进制数据,则必须重新排列顺序。所以这是你的HTML

<img src="image.php" />

现在您将注意到src指向PHP文件。那是因为我们要让PHP文件返回一个图像。这是image.php的样子

//Your query here
$row = mysqli_fetch_assoc($result);
header("Content-type: image/png");
echo $row['image1'];

这是有效的,因为浏览器将调用PHP文件,期待图像。 header告诉浏览器这是一个PNG文件,您现在可以转储二进制PNG数据。