我想输出一个内联jpg图像作为base64编码的字符串,但是当我这样做时:
$contents = file_get_contents($filename);
print "<img src=\"data:image/jpg;base64,".$contents."\"/>";
其中$filename
是包含base64图像的本地文本文件。输出如下:
<img src="data:image/jpg;base64,/9j/4A..... (the rest of the file)...." />
并且看似图像没有呈现,但
来自何处?它不在文本文件中。如果删除,图像将正确显示。
答案 0 :(得分:9)
这是一个Unicode Byte-Order Mark。该文件使用编辑器保存,该编辑器添加了BOM以指示文件编码为UTF-8。所以那些字节实际上在文件中,但是文本编辑器不会显示它,因为它不是文本。要存储此类数据,您需要删除BOM。最简单的方法是将编辑器配置为不添加BOM,但如果您没有对文件的创建过程产生影响,您也可以在脚本中即时使用它:
print "<img src=\"data:image/jpeg;base64,".ltrim($contents, "\xEF\xBB\xBF")."\"/>";