如何通过命令行缩放SVG?


17

SVG具有这些属性,这些属性决定了其大小:

width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"

我想400pt通过命令行将给定的SVG缩放为with,而不会破坏宽高比。这意味着,以上三个值必须正确更改,并且以下svg代码中的所有点均必须更改。我不想仅更改画布大小,而是更改整个svg图像大小。而且我不想用GUI /手工来做,但是我想用CLI来做。

如何通过命令行自动将SVG缩放到给定宽度?

原因:如果图像太小,Wikipedia的预览效果很差。请参阅此图像作为示例。

我将如何使用Inkscape-GUI执行此任务

  1. Shift + Ctrl + M(转换)
  2. 比例尺(选中“按比例缩放”)
  3. 输入宽度
  4. Shift + Ctrl + D(文档属性)
  5. 使页面适合选择

现在,我想要一个自动CLI方式来执行此操作。

顺便说一下,inkscape只需应用

<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
 id="surface0">

整个形象。


您使用什么操作系统?
terdon 2012年

Ubuntu 10.04.4 LTS(我将对其进行更新...)
Martin Thoma

SVG文件只是文本文件。您可以编辑该文件并更改widthheightviewBox值类似width="100%" height="100%" viewBox="0 0 400 212.58569"
martineau 2012年

我知道它们只是文本文件。但是,如果仅编辑这些值,则图像的大小不会改变。仅画布大小改变。手动编辑不是一种选择,我明确指出要自动更改。
Martin Thoma 2012年

是的,我知道您要求一种自动化的方法,但是我想如果您能找出要更改的内容(以文本方式),则可以使用多种可用的文本编辑工具(例如就像sed@terdon的答案一样)。您可能会遇到的一个问题是,所需的值可能与要执行相同操作的任何其他.svg文件不同。
martineau 2012年

Answers:


15

rsvg-convertlibrsvg2-bin包中可以调整SVG的大小。

有关完整说明,请参见此答案


4
rsvg-convert -a -w 500 -f svg Vector-triangle-inequality.svg -o Result.svg工作。但是rsvg-convert似乎不仅仅是调整大小。
2013年

2
但是,如该答案所述,@ moose的rsvg-convert使用点而不是像素。如果幸运的话,您可以将预期大小除以1.25。但是,如果您想要24px(19.2磅)的值,那么您就不走运了,因为它不愿意将非整数作为宽度或高度(不确定SVG是否允许这样做)。
Matthew Flaschen 2014年

@MartinThoma是的,的确如此。SVG输出文件大约是原始大小的两倍。我想知道为什么?阅读rsvg-convert --help不提供任何线索。
Serge Stroobandt

1
rsvg convert也似乎将描边路径转换为轮廓路径。您可能不想要这个(我知道我不想要)
scruss

1
该工具似乎只是将变换卡入每个元素,实际上并没有改变原始大小。
rtaft

3

如果只想更改一个图像,请在文本编辑器(例如,emacs)中将其打开,然后更改宽度条目。

对于仅使用CLI的怪异者,请使用sed:

$ sed 's/width=\"146.91299pt\"/width=\"400pt\"/' orig.svg > new.svg

但是,这不会缩放图像,仅设置其宽度。


也许是一种更好的方法,但是可以在许多图像中以批处理模式运行的方法肯定是从命令行使用inkscape:

$ inkscape -z -e out.png -w 400 -h 400 in.svg

对于许多文件(假设您希望它们都具有相同的宽度),请执行以下操作。它需要转换为png并假定文件名中没有空格:

$ for n in $(ls *svg | sed 's/.svg//'); do inkscape -z -e $n.png -w 400 -h 400 $n.svg; done

ImageMagick的转换是我的首选,但在缩放svg时似乎无法使用。


7
您的inkscape命令生成PNG,但我需要SVG。您的svg命令只会更改画布的大小,而不会更改图像的大小。您不能简单地使用文本编辑器,而只能更改我上面提到的值。我认为我必须澄清这个问题。
Martin Thoma 2012年

还需要增加一个标记:...“> <克变换=”规模(2)“> <路径... /> </克> </ SVG>以相同的因子缩放图像。
Stofke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.