Mar*_*oma 19 inkscape svg command-line
SVG 具有以下属性,它们决定了它的大小:
width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"
Run Code Online (Sandbox Code Playgroud)
我想在400pt不破坏纵横比的情况下通过命令行将给定的 SVG 缩放到 with 。这意味着,必须正确更改上述三个值以及以下 svg 代码中的所有点。我不想只改变画布大小,而是整个 svg 图像大小。我不想用 GUI/手动来做,但我想用 CLI 来做。
如何通过命令行自动将 SVG 缩放到给定的宽度?
原因:如果图片太小,维基百科的预览效果不好。请参阅此图像作为示例。
我将如何使用 Inkscape-GUI 完成此任务
现在我想要一个自动的 CLI 方式来做到这一点。
顺便说一下,inkscape 只是简单地应用了
<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
id="surface0">
Run Code Online (Sandbox Code Playgroud)
到整个图像。
小智 20
rsvg-convert从librsvg2-bin包中可以调整 svg 的大小。
有关完整说明,请参阅此答案。
如果您只想更改一张图像,请在文本编辑器(例如 emacs)中打开它并更改宽度条目。
对于极客,仅 CLI 的方法,请使用 sed:
$ sed 's/width=\"146.91299pt\"/width=\"400pt\"/' orig.svg > new.svg
Run Code Online (Sandbox Code Playgroud)
但这不会缩放图像,只会设置其宽度。
一种更好的方法,也许,但肯定可以在批处理模式下为许多图像运行的方法是从命令行使用inkscape:
$ inkscape -z -e out.png -w 400 -h 400 in.svg
Run Code Online (Sandbox Code Playgroud)
对于许多文件(假设您希望它们都具有相同的宽度),请执行以下操作。它需要转换为 png 并假设您的文件名中没有空格:
$ for n in $(ls *svg | sed 's/.svg//'); do inkscape -z -e $n.png -w 400 -h 400 $n.svg; done
Run Code Online (Sandbox Code Playgroud)
ImageMagick的 convert 是我的第一选择,但在缩放 svgs 时它似乎坏了。
| 归档时间: |
|
| 查看次数: |
25850 次 |
| 最近记录: |