【发布时间】:2016-03-02 21:19:35
【问题描述】:
我有一个大的 SVG 文件(大约 60 MB,10000x10000 像素,但有可能变得更大),我想从中创建许多平铺的 256x256 PNG 图像(在该示例中为 1600 张图片;round(10000/256)^2)。
有没有人知道如何在 Web 服务器上执行此操作(运行 PHP 等)?我考虑过 rsvg,但它似乎没有任何修改边界框的功能(我宁愿避免为每个部分手动进行)。 ImageMagick 可能能够做到,但我一直没有让它工作的运气。使用 rsvg 创建一个大的 PNG,然后使用专门用于平铺非常大的图像的工具可能会起作用,但我没有找到这样的东西!速度并不是真正的问题,尽管它是可取的,所以如果最坏的情况出现在最坏的情况下,我可能会考虑修改每个部分的 SVG 边界框。不过,我可以看到这一代人永远消失了!
有人知道有什么方法可以做到这一点吗?
编辑 2016-03-02:
我最近再次回到需要这个问题的答案,Inkscape 似乎是唯一可以在给定大小的给定区域渲染 SVG 的工具(svgexport 几乎满足这些要求,但它不会让你改变纵横比)。
我的目标是将 SVG 平铺成 256x256 的平铺,现在我已经成功地制作了一个脚本,该脚本可以通过在 inkscape 中重复渲染大约 16,000 x 16,000 并平铺生成的图像来平铺任意大的 SVG。我已经成功渲染了尺寸超过 500,000 x 500,000 像素的 SVG——内存使用没有问题(只是需要很长时间!)
【问题讨论】:
-
你试过 rsvg-convert,然后呢? ubuntuforums.org/showthread.php?t=820965
-
是的;它似乎可以创建一个大的渲染,但后来我遇到了拆分它的问题。如果我错了,请纠正我,但它似乎没有任何用于平铺或指定区域的内置功能(所有运算符似乎主要用于指定比例)。
-
ImageMagick 绝对可以做到(不过先转换成巨型 png 可能更容易)
标签: php linux svg imagemagick rsvg