我一直在努力做一些看起来很基础的事情:
在Inkscape中,如何同时调整文档及其内容(即图纸)的大小?
一点点背景:我想从The Noun Project中调整相当多的SVG文档的大小(它们通常是100x100px文档),而不必明确调整实际图形的大小。
注意:如果有命令行解决方案,我也可以解决!
我一直在努力做一些看起来很基础的事情:
在Inkscape中,如何同时调整文档及其内容(即图纸)的大小?
一点点背景:我想从The Noun Project中调整相当多的SVG文档的大小(它们通常是100x100px文档),而不必明确调整实际图形的大小。
注意:如果有命令行解决方案,我也可以解决!
Answers:
您没有提到正在运行的操作系统。我正在使用Ubuntu,并且已经能够成功使用librsvg2。
如果您可以访问Ubuntu,可以执行以下操作。首先,安装librsvg2:
sudo apt-get install librsvg2-bin
然后,cd
转到包含您的SVG的目录(确保它仅包含SVG!),并使用如下命令:
for old in *; do
new="$(echo "$old" | sed -e 's/svg$/new.svg/')"
rsvg-convert "$old" -w 160 -h 160 -f svg -o "$new"
done
这将创建一批新的SVG,其尺寸为200px x 200px,并保存为“ original-file-name.new.svg”
计算尺寸有些混乱。要将SVG转换为SVG,您需要做一些数学运算。在这种情况下,rsvg-convert中的“高度”和“宽度”选项使用pt而不是px,因此如果要100px,请使用80,如果要150px,则请使用120,依此类推。
您也可以使用rsvg-convert输出PNG。至少以我的经验来看,在光栅化文件方面比ImageMagick更好。请注意,您需要更改-f
为png
,需要将输出保存模式从更改's/svg$/new.svg/'
为's/svg$/png/'
,然后输入所需的宽度和高度作为像素值。
for old in *; do
new="$(echo "$old" | sed -e 's/svg$/png/')"
rsvg-convert "$old" -w 200 -h 200 -f png -o "$new"
done
rsvg-convert
as:rsvg-convert noun_project_1576.svg -w 320 -h 160 -f svg -o noun_project_1576-skewed.svg
这样,它将获取名为“ noun_project_1576”的源文件,并将其倾斜为400px x 200px,并将其重命名为“ noun_project_1576-skewed”。
librsvg
修正了文字错误后,效果会更好……
虽然有几个方法可以做到这一点-因为注意到这里 -这可以工作得很好是使用一种方式viewBox
。您只需像这样修改SVG标签的内容:
<svg
width="1280"
height="800"
viewBox="0 0 1280 800">
<!-- More markup... --!>
</svg>
什么viewBox
做的是它定义了一个内部坐标系统文件。然后,您只需根据需要修改width
和height
属性即可轻松缩放文档。
请注意,虽然有一些缺点。一方面,它仅在某些上下文中起作用,特别是如果您以某种方式直接将SVG文档包含在标记页面中。与此同时使用<img>
标签可能会或可能不会产生意外的结果。您将需要做一些自己的研究,以找出最佳方法。