php - 如何使用 Inkscape 将 SVG 字符串转换为 jpg

标签 php svg inkscape

在花了两天尝试使用 ImageMagick 从 SVG 字符串栅格化 jpeg 后,我终于放弃了。

虽然我设法使实际转换工作正常,但似乎 Imagemagick 在渲染图像时无法正确转换变换/旋转功能,导致输出与原始 SVG 不同。

经过进一步研究,这似乎是一个已知问题,“Inkscape”是在 PHP 中将 SVG 转换为 jpeg/png 的最佳方法。

问题是我的 SVG 数据是通过 JSON 发送到我的 PHP 脚本的。如何将 blob 或字符串输入 Inkscape 命令行以进行转换?

非常感谢您的任何建议。

最佳答案

如果您有一个 SVG 字符串,并且您要通过 AJAX 将它从浏览器发送到服务器,您需要将它写入一个临时文件,以便可以从 Inkscape 命令行引用它。您无法使用 Inkscape 命令行渲染为 JPEG,但可以轻松渲染为 PNG,如果您确实需要不同的格式,当然您可以随后使用 ImageMagick 进行转换。

你需要这样的东西:

/path/to/inkscape \
    --without-gui \
    --export-png=/path/to/output.png \
    /tmp/file/input.svg

如果您接受来自用户的完整/部分 SVG 输入,请记住您需要牢记大量安全问题。如果需要,很乐意对此进行扩展。

关于php - 如何使用 Inkscape 将 SVG 字符串转换为 jpg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400897/

相关文章:

php - 统计用户评论的回复数

fonts - 在 SVG 中发布渲染 truetype 字体

graphics - R 将热图简化为 pdf

php - PHP中的startsWith()和endsWith()函数

php - RabbitMQ 和 PHP 如何将任务返回到队列?

javascript - D3 无法渲染简单的线条

Inkscape:圆形坐标

python - 获取 Inkscape SVG 元素旋转的绝对坐标

php - 在完整网页中打印网页

html - 在父 div 悬停时填充 SVG(无 JS)