嵌入图像数据内联html

时间:2014-08-07 19:13:57

标签: php html data-uri

我正在尝试使用内联数据嵌入图像。但是当我不将数据编码为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'没有。问题是什么?

1 个答案:

答案 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