0

好的,所以我的最终目标是显示存储在数据库(MySQL)中的图像(或博客类型样式中的多个图像)作为blob。现在它显示一个损坏的图像图标 ( 在此处输入图像描述)。这是我迄今为止尝试过的:

<?php
    $link = mysql_connect('HOST','USER','PASS!') or die("Could not connect to database");
    $dbsel= mysql_select_db('DATABASE', $link) or die("Couldn't select database.");

    $result = mysql_query("SELECT * FROM bmblog");

    while($row = mysql_fetch_assoc($result))
    {

        echo "<img src='php/imgView.php?imgId=".$row['media']."' />";

        echo "<center>" . "<font color='white'>" . "<FONT FACE='timesnewromans'>" . nl2br(htmlspecialchars($row['msg']));

        echo "<br>";
        echo "<br>";
    };

?>

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

echo "<center>" . "<font color='white'>" . "<FONT FACE='timesnewromans'>" . nl2br(htmlspecialchars($row['msg']));

两者都显示相同的损坏图像图标。但是,我确实注意到,在没有尝试回显第二行(文本)的情况下,我确实在损坏的图像图标周围得到了一个完整的边界,该图标本来应该是图像的大小。这与第一种方法不同。我已经搜索了几个小时,并找到了大量关于此的帖子,但似乎没有一个对我有用或有意义,我对 PHP 相当陌生,所以这可能是我缺少的一些简单的东西;无论哪种方式,提前感谢您的任何帮助,非常感谢!

4

1 回答 1

0

可能解决问题的方法是在图像header("Content-Type: image/jpeg");之前添加print/echo

同样奇怪的是,base64您包含的示例不起作用。当我查看提供的示例时,该Also部分的第一行echo以双引号(“)打开并以单引号(')结束。这可能会导致异常以及您无法正确测试 base64 的原因。

肯定是:

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

您还可以添加字符集:data:image/jpeg;charset=utf-8;base64,

最后,我建议查看以下可能有帮助的示例

如何对图像进行 Base64 编码

于 2013-08-03T11:40:51.810 回答