Graphics 我可以使用什么库来操作SVG文件?
我正在搜索一个库,它允许我对SVG文件执行图形操作。我所说的“操纵”是指:Graphics 我可以使用什么库来操作SVG文件?,graphics,image-processing,svg,vector-graphics,adobe-illustrator,Graphics,Image Processing,Svg,Vector Graphics,Adobe Illustrator,我正在搜索一个库,它允许我对SVG文件执行图形操作。我所说的“操纵”是指: 将两个重叠形状合并为一个形状 找到形状的几何中心 绘制一个形状的副本,其大小为原始形状大小的25% …以及在Illustrator中可以做的其他事情 我需要构建一个流程来自动化这些任务,并在数百个SVG文件上执行它们。我意识到我可以在Illustrator中编写脚本来自动化这类事情,但我需要在远程机器上运行它,不能依赖Illustrator的运行实例 其中一个Qt库具有类似的功能,您可以使用它执行大多数转换操作: 我
- 将两个重叠形状合并为一个形状
- 找到形状的几何中心
- 绘制一个形状的副本,其大小为原始形状大小的25%
我需要构建一个流程来自动化这些任务,并在数百个SVG文件上执行它们。我意识到我可以在Illustrator中编写脚本来自动化这类事情,但我需要在远程机器上运行它,不能依赖Illustrator的运行实例 其中一个Qt库具有类似的功能,您可以使用它执行大多数转换操作:
我不知道有哪一个库可以直接满足您列出的要求,但我认为仅使用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)")
为了实现自动化,以便在远程机器上运行它,可以使用ApacheBatik库,并使用Rhino编写脚本。请看下面的示例,了解如何执行此操作: