Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphics 我可以使用什么库来操作SVG文件?_Graphics_Image Processing_Svg_Vector Graphics_Adobe Illustrator - Fatal编程技术网

Graphics 我可以使用什么库来操作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库具有类似的功能,您可以使用它执行大多数转换操作: 我

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

  • 将两个重叠形状合并为一个形状
  • 找到形状的几何中心
  • 绘制一个形状的副本,其大小为原始形状大小的25%
…以及在Illustrator中可以做的其他事情


我需要构建一个流程来自动化这些任务,并在数百个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编写脚本。请看下面的示例,了解如何执行此操作: