使用PHP时不显示Base64图像

时间:2012-09-19 14:30:38

标签: php html image

我需要显示Base64格式的图像。当我在PHP中构建img标签时,它不会显示图像(只是defualt'broken image'图标)。当我查看页面源并单击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>";

来自View Source的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>

编辑:

这并没有出现在View Source中,而是挖掘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\"/>";

0 个答案:

没有答案