我正在尝试使用内联数据嵌入图像。但是当我不将数据编码为base64
时它不起作用并显示一些随机字符。这是php中的两个变体:
....
//$img-->image data read from database
$data = stream_get_contents($img);
$data64 = base64_encode($data);//when I don't use this it doesn't work
$image64 = '<img src="data:image/jpeg;base64,'.$data64.'>';
$image = '<img src="data:image/jpeg,'.$data.'>';
$img64
可以工作但是`$ img'没有。问题是什么?
答案 0 :(得分:2)
这是预料之中的。 JPEG数据自然会包含>
和"
以及其他HTML元字符。只要遇到"
然后>
,您的浏览器就会认为<img>
标记已关闭,其他所有内容都会被视为文字
例如,如果您没有base64_encode,那么您将获得类似
的内容<img src="data:image/jpeg,randomgarbagewitha"andthena>andsome more random garbage">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
the binary contents of the jpg here
^--end of src attribute
^---end of img tag