inkscape 相关问题

关于编写Inkscape矢量图形应用程序脚本的编程问题,例如:使用Inkscape CLI作为图形转换工作流程的一部分。关于安装应用程序的问题应该在Super User上进行。有关使用该应用程序的问题应继续使用平面设计。

在 Inkscape 中批量将 SVG 转换为 PNG 不起作用

我想将文件夹 C:\Users\Eric\Desktop\svg 中的多个 SVG 文件转换为名称为 [SVG 文件名].svg.png 的 512x512 PNG 文件。 我尝试了以下命令: for /f %f in ('dir /b "C:\Us...

回答 3 投票 0

尝试将 SVG 图像添加到 xcode 资源时出错

我已使用 vectorizer.io 网站将图像从 PNG 转换为 SVG。使用 Chrome 浏览器和 GIMP 查看时,SVG 图像看起来不错。但是当我尝试将其添加到资产文件夹中时...

回答 2 投票 0

根据clipPath元素更改要剪切的SVG路径

我有一个如下所示的 SVG: 我有一个如下所示的 SVG: <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 576 576"> <defs> <style>...</style> <clipPath id="clip-path"> <rect class="cls-1" x="0.02" width="575.04" height="576"/> </clipPath> </defs> <g class="cls-2"> <path class="cls-3" d="M137.91-147.28c-4-1.67-8.25-3.46-12.37-3.86-5.43-.53-9.26,1.73-12.55,5a18.75,18.75,0,0,0-4.69-9.42,19.23,19.23,0,0,0-6.45-... <path class="cls-4" d="M.08,502.59c-.79-5.67-6.22-4.3-5.81-.22a17.15,17.15,0,0,1,0,2.95c-.22,2.82-1.46,7.6-5,7.61-1.35,0-2.61-1-3.12... ... 我想改变它: 没有分组(这很简单) 更改 path、rect 等元素,以便根据 clipPath 元素中的内容进行剪辑。 clipPath 不应再出现在 SVG 中(因为不再需要它) 我试过这个: inkscape --actions \ "select-all:groups; SelectionUnGroup; ObjectUnSetClipPath; export-filename: output.svg; export-plain-svg; export-do;" \ Decorations.svg 这会删除分组,但 path 元素不会被剪裁。 clipPath 仍然存在。 ObjectUnSetClipPath 将删除剪辑属性 clip-path="url(#clip-path)" – 而不是 <def> 剪辑路径本身。 但是如果你的clipPath定义被删除,你就不能剪辑任何元素。 function stripClip(el){ let clipPaths = document.querySelector(el).querySelectorAll('clipPath'); if(clipPaths.length){ clipPaths.forEach(function(item, i){ item.remove(); } ) } } svg{ width: 20vw; } .clipped{ clip-path: url(#clip-path2); } <p><button onclick="stripClip('#svg1')" >remove ClipPath</button></p> <svg id="svg1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 36 36"> <defs> <style>...</style> <clipPath id="clip-path"> <rect class="cls-1" x="10" width="36" height="18"/> </clipPath> </defs> <g class="cls-2"> <path clip-path="url(#clip-path)" d="M18 2.0845 a 15.9155 15.916 0 0 1 0 31.83 a 15.916 15.916 0 0 1 0 -31.83z" fill="red" /> <rect clip-path="url(#clip-path)" x="0" y="0" width="10" height="25" /> </g> </svg> <svg id="svg2" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 36 36"> <defs> <style>...</style> <clipPath id="clip-path2"> <rect class="cls-1" x="10" width="36" height="18"/> </clipPath> </defs> <g class="cls-2"> <path class="clipped" d="M18 2.0845 a 15.9155 15.916 0 0 1 0 31.83 a 15.916 15.916 0 0 1 0 -31.83z" fill="red" /> <rect class="clipped" x="0" y="0" width="10" height="25" /> </g> </svg> 编辑:使用 paper.js 获取 svg 交叉路径 诚然,这不是最方便的方法,但它是可能的: 除了 paper.js 之外,我们还需要一些脚本/帮助程序将 svg 形状(圆形、矩形等)转换为 <path> 元素(我正在使用 'pathThatSvg' ,因为 paper.js 只能基于 2 个路径元素计算新的交叉路径,如下所示: var intersectionPath = path1.intersect(clipPath); 基于这个答案 var svg = document.querySelector("#svgIntersect"); // set auto ids for processing function setAutoIDs(svg) { var svgtEls = svg.querySelectorAll( "path, polygon, rect, circle, line, text, g" ); svgtEls.forEach(function (el, i) { if (!el.getAttribute("id")) { el.id = el.nodeName + "-" + i; } }); } setAutoIDs(svg); // convert shapes to paths function shapesToPath(svg) { pathThatSvg(svg.outerHTML).then((converted) => { var tmp = document.createElement("div"); tmp.innerHTML = converted; svg.innerHTML = tmp.querySelector("svg").innerHTML; }); } shapesToPath(svg); function intersectPath(svg, decimals=2) { // init paper.js and add canvas canvas = document.createElement('canvas'); canvas.id = "canvasPaper"; canvas.setAttribute('style','display:none') document.body.appendChild(canvas); paper.setup("canvasPaper"); // process clipped elements var all = paper.project.importSVG(svg, function (item, i) { item.position = new paper.Point( item.bounds.width / 2, item.bounds.height / 2 ); //item.scale(0.5, new Point(0, 0) ) var items = item.getItems(); var ids = item._namedChildren; var groups = item.children; groups.forEach(function (gr, i) { var group = gr["_namedChildren"]; if (group) { for (key in group) { //get clip path var clip = group["clipPath"][0]; if (key !== "clipPath") { var el = group[key][0]; //get intersection path and generate d commands var elClipped = el.intersect(clip); var elClippedD = elClipped .exportSVG({ precision: decimals }) .getAttribute("d"); // select path by id and overwrite d attribute var newEl = svg.querySelector("#" + key); newEl.setAttribute("d", elClippedD); } } } }); // remove clip defs and attributes var clippedEls = svg.querySelectorAll("[clip-path]"); clippedEls.forEach(function (clippedEl, e) { clippedEl.removeAttribute("clip-path"); }); svg.querySelector("defs").remove(); svg.classList.add("svg-intersect"); console.log(svg.outerHTML) }); } svg{ border: 1px solid #ccc; display:inline-block; width:200px; } .svg-intersect path{ stroke:red; stroke-width: 0.25; } <script src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.0/paper-full.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/pathThatSvg.umd.min.js"></script> <p> <button type="button" onclick="intersectPath(svg)">get Path Intersect</button> </p> <svg id="svgIntersect" viewBox="0 0 100 100"> <defs> <clipPath id="clipPath"> <circle cx="25" cy="25" r="25"/> </clipPath> </defs> <g id="clipGroup" clip-path="url(#clipPath)"> <circle fill="#999" data-id="circle" cx="25" cy="25" r="25" /> <rect fill="#555" id="rect" x="25" y="25" width="50" height="50" /> </g> <g clip-path="url(#clipPath)"> <circle fill="#444" id="circle2" cx="66" cy="25" r="25" /> <rect fill="#22" id="rect2" x="15" y="12.5" width="20" height="75" /> </g> </svg>

回答 1 投票 0

填充 inkscape 中具有相同编号的区域

我想用特定的颜色为图片中的所有编号区域着色。例如,我想将标有数字 3 的所有内容填充为红色。这可能吗? 如果我需要提供更多详细信息,我

回答 0 投票 0

如何在 inkscape 中更改图层宽度和高度

当我想在带有M1 pro芯片的macOS 13.2中的inkscape Inkscape 1.2.1(9c6d41e,2022-07-14)中更改图层宽度和高度时,我发现某些图层无法拖动以调整图形大小。例如...

回答 0 投票 0

在来自 `<image>` 或 `<use>` 元素的 SVG 文件中应用转换转换

所以基本上我想转换这个: 转换=“翻译(...)” 到 x/y 坐标。在 元素上 附加信息: 与此问题类似但更具体: 删除

回答 1 投票 0

在来自 `<image>` 或 `<use>` 元素的 SVG 文件中应用转换

所以基本上我想转换这个: 转换=“翻译(...)” 到 x/y 坐标。在 元素上 附加信息: 与此问题类似但更具体: 删除

回答 0 投票 0

Python:在没有抗锯齿的情况下将 svg 转换为 png

我正在尝试在 python 中将 svg 转换为 png,但我不想要任何压缩和抗锯齿。 我试过将 inkscape 与子进程一起使用,但我找不到参数来告诉 inkscape 我...

回答 0 投票 0

Python:将 svg 转换为 png 而不压缩

我正在尝试在 python 中将 svg 转换为 png,但我不想要任何压缩和抗锯齿。 我试过将 inkscape 与子进程一起使用,但我找不到参数来告诉 inkscape 我 ...

回答 0 投票 0

Inkscape CLI FileRevert 在 1.1 或 1.2 中不起作用,试图刷新 Inkscape GUI

我正在开发一个使用 inkscape 来操作 SVG 的 SVG 动画工具,我需要更新 inkscape 以显示动画 SVG 的选定状态,以便让用户进行更改(它...

回答 3 投票 0

在 Inkscape 中按类型选择节点

有没有办法选择多个相同类型的路径节点?只喜欢平滑节点还是只喜欢端点?我有一个复杂的绘图轮廓组合在一条路径中,我需要做的是

回答 0 投票 0

使用 inkscape 命令行失败将 svg 转换为 png

我觉得我一定是在做一些愚蠢的错误,但我就是无法让它发挥作用。这是我从 cmd 运行的命令: inkscape.com "C:\path\ship.svg" -e --export-png="C:\Path\ship.png" --

回答 3 投票 0

使用 Inkscape 和 Python 将 SVG 重复转换为 EMF 的最快方法

Python 3.9.0 墨景0.92 我使用 Inkscape 将 SVG 转换为 EMF,但这需要太多时间。 简单示例代码 导入子流程 def convert_svg_to_emf(input_svg_path, output_emf_path): ...

回答 1 投票 0

Inkscape自动平滑节点的算法

我正在通过插值(很多)点来生成平滑曲线。我希望有局部支持(即只有少数点决定局部的平滑曲线),所以我不想使用经典的 ...

回答 1 投票 0

为什么inkscape默认扩展不能使用?

透视后再透视前正确的透视 我使用的是inkscape v 1.0.这里当我使用透视扩展时,它不可能工作,你看到的图像在透视后 ...

回答 1 投票 0

如何转换类型3字体到类型1字体在eps文件?

我在Microsoft PowerPoint中创建了一个图像。然后我使用文件-> Save as -> svg选项。后来我在Inkscape中导入这个svg图片,并保存为eps图片。但是,好像我的eps图片......。

回答 1 投票 0

什么是与文本相对的符号,我如何将它们转换为路径?

当我在MySQL Workbench中把一个ER图导出为SVG时,它的文本使用的是 标签。这使得我们无法在不破坏布局的情况下将表格复制到另一个文件中。(复制的对象...

回答 1 投票 0

Inkscape: 使用CLI动词翻转对象

我在Ubuntu 20.04上使用Inkscape 1.0。我有一个简单的SVG文件,是我用Inkscape创建的,id为path10。我想在命令行中使用Inkscape动词来垂直翻转对象:...。

回答 1 投票 0


如何正确导入到manim的SVG路径

我正在Inkscape上制作徽标,我想将其导入manim。该文件确实正确导入了SVG的所有路径,但是正在发生奇怪的事情。我运行文件的代码是...

回答 1 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.