我需要显示一个 Base64 格式的图像。当我在 PHP 中构建 img 标签时,它不显示图像(只是默认的“损坏的图像”图标)。当我查看页面源并单击 Base64 数据时,会按预期显示图片。此外,如果我复制并粘贴页面源并将其保存为 HTML 文件,它会按预期显示。我还尝试了一个随机图像,但是因为我的图像是从 .html 文件中工作的,所以我认为它没问题并且应该可以工作吗?
.php 代码:
header('content-type: text/html');
...
echo "<html><head></head><body>";
echo "Name = $name<br/>";
echo "<img src=\"data:image/jpg;base64,$photo\"/>";
echo "</body></html>";
查看源代码的 HTML:
<html>
<head></head>
<body>Name = Andrea Pilipczuk<br/>
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAyADIAA...{too big to fit here].../9k="/>
</body>
</html>
编辑:
这并没有出现在查看源代码中,而是在 Chrome 周围挖掘,我检查了图像元素,发现最后是“9k=��������”。这是某种填充物吗?当我编辑元素以删除这些图像时,图像按预期显示。
以下代码删除了随机字符并正确显示图像,但似乎有点 hacky,显然更愿意解决根本问题。
$unpadded = explode("=", $photo);
$padding = strlen($unpadded[0]) % 3;
$padded = $unpadded[0];
while ($padding > 0) {
$padded .= "=";
$padding--;
}
echo "<img src=\"data:image/jpeg;base64,$padded\"/>";