在PHP中将SVG文件渲染为PNG或JPEG

14

我已经尽可能地搜索,但只找到了一个调用Inkscape来渲染SVG的PHP类,因此我在这里提问:

我有一个通过某种方式生成(或由客户上传)的有效SVG文件。我需要使用仅限于PHP和/或GDLib将其呈现为JPG或PNG,因为SVG并不被所有浏览器支持。

我没有安装任何东西的选项,因此使用GDLib将SVG转换为PNG的类是最理想的选择。


使用纯GD库的好解决方案 https://www.phpclasses.org/browse/file/226624.html,但它有一些需要修复的提示和警告。在修复这些提示和警告后,我在我的项目中使用了它。希望它能帮助到某些人。 - Shahadat Hossain Khan
1个回答

30

检查是否已安装ImageMagick(您可以使用phpinfo来查找)。如果是,则可以使用以下代码将其转换为PNG格式。

$image = new Imagick();
$image->readImageBlob(file_get_contents('image.svg'));
$image->setImageFormat("png24");
$image->resizeImage(1024, 768, imagick::FILTER_LANCZOS, 1); 
$image->writeImage('image.png');

这个问题已经有很多相关的讨论了,其中一个非常有用的讨论是这个: Convert SVG image to PNG with PHP


2
很遗憾,不是这样的,我无法安装它。我只有PHP和GDLib。但使用GDLib一定是可能的...几乎每个SVG标签都有一个GDLib函数,所以这几乎只是一个翻译问题。 - DanRedux
GD不支持SVG。Wikimedia支持ImageMagiksodipodiinkscapebatikrsvgimgserv。如果您无法安装其他软件,也许您可以查看这些转换器是否可以独立运行,并从您的PHP脚本中调用它。 - David Z.
使用纯GD库的好解决方案 https://www.phpclasses.org/browse/file/226624.html,但它有一些需要修复的提示和警告。在修复这些提示和警告后,我在我的项目中使用了它。希望它能帮助到某些人。 - Shahadat Hossain Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接