php - 正确的 header php mysql blob 显示图像

标签 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 时图像应该显示,但我收到错误,由于错误而无法显示。

谢谢!

最佳答案

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 数据。

关于php - 正确的 header php mysql blob 显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714163/

相关文章:

php - MYSQL中通过php查询

php - 将日期时间输出更改为今天并中断时间

ios - iOS Objective C 中的错误域=NSURLErrorDomain 代码=-1012 "(null)"

iphone - 等待值改变然后执行 block

图像上的 Java 文本

php - 使用 PHP 的设备的唯一 ID

php - ssh2_exec wget将不起作用

ios - 如何每行显示 3 个单元格 UICollectionView

android - 从网络服务器保存图像并将其设置为墙纸

html - 尝试使用 CSS 调整 img 的大小,不响应任何大小属性