【问题标题】:What Library Can I Use to Manipulate SVG Files?我可以使用什么库来操作 SVG 文件?
【发布时间】:2011-04-02 22:56:13
【问题描述】:

我正在寻找一个允许我对 SVG 文件执行图形操作的库。我所说的“操纵”是指:

  • 将两个重叠的形状合并为一个形状
  • 找到形状的几何中心
  • 绘制一个形状的副本,其大小为原始形状的 25%

...以及其他可以在 Illustrator 中完成的事情。

我需要构建一个流程来自动执行这些任务并在数百个 SVG 文件上执行它们。我意识到我可以编写脚本来在 Illustrator 中自动执行此类操作,但我需要在远程机器上运行它并且不能依赖于 Illustrator 的运行实例。

【问题讨论】:

    标签: graphics image-processing svg vector-graphics adobe-illustrator


    【解决方案1】:

    我不知道有哪个库可以直接满足您列出的要求,但我认为仅使用 SVG DOM 编写脚本并不难。

    对于第一个任务,听起来最简单的事情就是将两个形状组合在一起。

    
    var shape1 = document.getElementById("shape1");
    var shape2 = document.getElementById("shape2");
    var newG = document.createElementNS(svgNs,"g");
    shape1.parentNode.removeChild(shape1);
    shape2.parentNode.removeChild(shape2);
    newG.appendChild(shape1);
    newG.appendChild(shape2);
    

    对于第二个任务,您可以获取一个形状的边界框并找到它的中心点。

    
    var bbox = shape1.getBBox();
    var centrePoint = {x:bbox.x + bbox.width/2, y:bbox.y + bbox.height/2};
    

    对于第三个任务,您可以复制一个形状,然后对其应用缩放变换。

    
    var shape1Clone = shape1.cloneNode(true);
    shape1Clone.setAttributeNS(null,"transform","scale(.75)") 
    

    为了自动执行此操作以便您可以在远程机器上运行它,您可以使用 Apache Batik 库,并使用 Rhino 编写脚本。看看这个例子如何做到这一点:

    【讨论】:

      【解决方案2】:

      其中一个 Qt 库具有类似的功能,您可能可以使用它进行大部分转换操作:

      Qt SVG

      【讨论】:

        猜你喜欢
        • 2013-01-19
        • 2013-06-10
        • 1970-01-01
        • 2016-04-21
        • 2011-09-19
        • 2014-03-10
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多