在Inkscape中,同时调整文档及其内容的大小


25

我一直在努力做一些看起来很基础的事情:

在Inkscape中,如何同时调整文档及其内容(即图纸)的大小?

一点点背景:我想从The Noun Project中调整相当多的SVG文档的大小(它们通常是100x100px文档),而不必明确调整实际图形的大小。

注意:如果有命令行解决方案,我也可以解决!


我不确定您的最终目标,但是对于AFAIK,文档区域除了打印(在其中您可以选择仅打印文档区域)之外,有些地方是任意的。但是,您也只能打印对象区域,因此这可能是解决障碍的一种方法。
2012年

@ DA01好吧,我认为当您导出到Bitmap时文档非常有用(这就是我正在做的事情)。
julien_c 2012年

顺便说一句,有没有办法调整一个不涉及拖动角的对象的大小,而是在哪里明确指定大小?那可能就是我所追求的东西:)
julien_c 2012年

1
即使那样,它也是一个任意选择。您可以像导出“区域”一样轻松地绘制一个包含框。实际上,这就是我通常更喜欢这样做的方式。至于调整大小,您可以选择对象,然后要么a)使用顶部的状态栏并输入尺寸更改,要么b)进入对象>变换并在变换托盘中输入值
DA01 2012年

@julien_c:我想说的是,这些对象是直线矢量艺术,本身没有大小除非将它们输出到栅格设备(或文件)。实际上,它们的大小(英寸,像素,肘节)无关紧要。
horatio 2012年

Answers:


24

您没有提到正在运行的操作系统。我正在使用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更好。请注意,您需要更改-fpng,需要将输出保存模式从更改'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

顺便说一下,我只是假设您需要对大量SVG进行批处理方式。如果不是,您仍然可以使用rsvg-convertas: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”。
阿南达·马赫托

@julien_c,刚刚跟进:您是否尝试过此建议并对此感到有运气?
阿南达·马哈托

在终端中复制并粘贴代码,但返回sed:-e表达式#1,字符14:未确定的's'命令-o的缺少参数-任何建议
raphie

我改变了`来“,现在我收到提示保存到文件:回声svgfile.svg | sed的-e 'S / SVG $ / 2.svg'
raphie

太好了- librsvg修正了文字错误后,效果会更好……
Joce

7

Inkscape当前没有本地方法可以做到这一点。唯一的方法是分别调整内容和文档的大小。


2

虽然有几个方法可以做到这一点-因为注意到这里 -这可以工作得很好是使用一种方式viewBox。您只需像这样修改SVG标签的内容:

<svg
 width="1280"
 height="800"
 viewBox="0 0 1280 800">
    <!-- More markup... --!>
</svg>

什么viewBox做的是它定义了一个内部坐标系统文件。然后,您只需根据需要修改widthheight属性即可轻松缩放文档。

请注意,虽然有一些缺点。一方面,它仅在某些上下文中起作用,特别是如果您以某种方式直接将SVG文档包含在标记页面中。与此同时使用<img>标签可能会或可能不会产生意外的结果。您将需要做一些自己的研究,以找出最佳方法。


2
这对我不起作用,我也不明白为什么。如果我编辑宽度和高度,但将viewBox保持不变:当Chrome渲染原始svg文件时,它仅显示一小部分内容。当Inkscape渲染它时,它会显示整个内容,但是它比页面大得多,这与Chrome所显示的内容相同(较小)。因此,总而言之:内容未根据视图框坐标缩放。我的SVG中有几个子svg元素,但是它们都是基于(我假设)视图框坐标进行转换的。
CPBL

工作对我来说在Inkscape中0.92.3,火狐66,和铬73
Socowi
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.