我正在使用PHP。我想使用file_get_contents来获取.svg文件,并将其转换为用作图像标记中的数据uri。这些方面的东西:
控制器:
$mylogo = file_get_contents(FCPATH.'app/views/emails/images/mylogo.svg');
查看:
<img src="data:image/svg+xml;utf8,<?= $mylogo ?>">
我需要将它转换为某种东西(base64?),因为它现在只是将它转储到标签中,并且尽管图像确实出现了,但它会使围绕它的img标签变得混乱。
答案 0 :(得分:2)
<svg>
元素可以像任何其他元素一样直接回显到网页上;没有必要将其作为img
src
属性包含在内。 PHP的include
可用于此(即include('/path/to/image.svg')
),在众多其他方法中。
或者,如果由于某种原因,您需要将svg
包含为实际的img
标记,则不需要file_get_contents
或类似的功能; SVG可以像任何其他图像类型一样链接为源路径(即<image src="/path/to/image.svg">
)。
答案 1 :(得分:0)
$encodedSVG = \rawurlencode(\str_replace(["\r", "\n"], ' ', \file_get_contents($path)));
<img src="data:image/svg+xml;utf8,<?= $encodedSVG ?>">
它的 CPU 时间效率较低,而且请求的大小也更长!