我可以使用什么库来操作SVG文件?

时间:2010-08-24 01:58:47

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

我正在搜索一个允许我对SVG文件进行图形处理的库。通过“操纵”我的意思是:

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

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

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

2 个答案:

答案 0 :(得分:2)

我不知道哪个库直接满足您列出的要求,但我认为使用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编写脚本。看看这个例子如何做到这一点:

答案 1 :(得分:0)

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

Qt SVG