【问题标题】:Proper header php mysql blob display image正确的标头 php mysql blob 显示图像
【发布时间】:2014-01-09 22:30:39
【问题描述】:

我正在尝试在我的 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 时显示,但我收到一个错误,由于错误而无法显示。

谢谢!

【问题讨论】:

  • $row['image1']的数据类型是什么?是网址吗?
  • 它来自 mysql 数据库 blob 字段

标签: php ios image http-headers blob


【解决方案1】:
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 数据。

【讨论】:

  • 那么我如何将原始二进制数据传递给浏览器并让它渲染图像?
  • 编辑解释如何做到这一点
  • 其实我做对了!但我还有其他事情搞砸了,但你也把我引向了正确的方向。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2014-03-19
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多