如何动态设置 data:image/ 文件类型?

How do I set data:image/ filetype dynamically?

我有一个数据库,其中包含保存为 BLOBs 的图像。我可以像这样在页面上成功使用图像:

<img src="<?php echo 'data:image/jpeg;base64,'.base64_encode($image)?>" alt="Landing" width="150px">

然而,这需要在 data:image/jpeg; 的实际语句中手动设置文件扩展名。问题是我有很多不同格式的图像。我想确保根据每个图像的特定文件的实际文件扩展名正确设置文件类型。我已经有一个嵌套数组,其中包含这些文件的所有文件扩展名。

尽管如此,我在动态设置扩展名时遇到了问题。我试过简单地用 "" 替换 '' 单引号,这样我就可以轻松地在语句中使用变量,如下所示:

<img src="<?php echo "data:image/$images['monitor']['extension'];base64,".base64_encode($image)?>" alt="Landing" width="150px">

这不起作用,因为我相信 src 标签本身已经包含双引号。我的 IDE 告诉我一个错误 Cannot use '[]' for reading。我也试过使用连接的单引号代替:

<img src="<?php echo 'data:image/' . $images['monitor']['extension'] . ';base64,'.base64_encode($image)?>" alt="Monitor" width="150px">

这也没有用。我自己无法在网上找到任何解决方案。有没有办法动态设置文件扩展名?尽管为每个图像设置 jpeg 大多数情况下都有效,例如对 image/x-ico 选项卡图标设置 jpeg 会使图像无法正确加载。

假设BLOB包含图像的实际二进制数据。

只需确保扩展名与要求的语法匹配

jpg 文件:

ico 文件:http://www.createchhk.com/SO/testSO_18Nov2021.php