使用PHP准备SVG文件以在img标签数据uri中使用

时间:2016-12-15 19:10:11

标签: php html image svg

我正在使用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标签变得混乱。

2 个答案:

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

⚠️ 不要转换为 base64

它的 CPU 时间效率较低,而且请求的大小也更长!

Know more about why