【问题标题】:Display base64 encoded image on a browser when hitting a specific url点击特定网址时在浏览器上显示 base64 编码图像
【发布时间】:2019-05-31 07:26:29
【问题描述】:

我想显示使用 base64_encode 编码的图像。图片是根据通过 URL 传递的 id 参数从 mysql db 中获取的。内容类型已设置。假设我在 index.php 文件中有一个代码,我在浏览器中使用 url localhost:8080/products_images/index.php?id=1000 访问该文件

header('Content-Type:image/png');
if (isset($_GET['id'])) {
$id = $_GET['id'];
} 

$sql = "SELECT image FROM table WHERE id = ".(int)$id;

$image = $dbInstance->getArray($sql);
unset($sql);
echo '<img src="data:image/png; base64,'.$image[0]['image'].'"/>';

它没有在浏览器上显示图片,而是说图片“localhost:8080/products_images/index.php?id=1000”无法显示,因为它包含错误。

我知道它的发生,因为在浏览器 DOM 上,我可以清楚地看到图像标签看起来像 &lt;img src="localhost:8080/products_images/index.php?id=1000"&gt; 它不是将编码字符串显示为 img src 标签,而是显示整个 URL。 任何帮助将不胜感激!

【问题讨论】:

  • 您的脚本实际上并没有输出任何东西。你期待看到什么?
  • 嘿,感谢您在这里快速回复。我已经编辑了代码。请立即检查。
  • @Juan 是的,我确信并测试了我在这里得到了正确的 base64 编码图像。
  • 这个问题吸引了太多低质量的答案。这可能应该被标记为适度,并要求为其设置某种形式的保护。
  • 你有一些 javascript 可以将它插入到 DOM 中吗?

标签: php database image blob


【解决方案1】:

要将图像发送到客户端,您可以尝试使用imagecreatefromstring 函数从字符串中加载图像,然后使用imagepng 函数将其发送到客户端,它应该会给您类似的信息:

<?php
    $data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
    . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
    . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
    . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';

    $data = base64_decode($data);
    $im = imagecreatefromstring($data);

    if ($im !== false) {

        header('Content-Type: image/png');

        // Send the image
        imagepng($im);

        imagedestroy($im);

    } else {

        echo 'An error occurred.';

    }
?>

我从php doc得到它

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    相关资源
    最近更新 更多