我试图在我的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时显示,但是我收到错误,因为错误而无法显示。
谢谢!
答案 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数据。