Inkscapeで、ドキュメントとそのコンテンツの両方のサイズを同時に変更します


25

私はかなり基本的なことをするのに苦労しています:

Inkscapeで、ドキュメントとそのコンテンツ(図面)を同時にサイズ変更するにはどうすればよいですか?

ちょっとしたコンテキスト:実際の図面のサイズを明示的に変更せずに、The Noun Project(通常は100x100pxのドキュメント)からかなり多数のSVGドキュメントのサイズを変更したい。

注:コマンドラインソリューションがある場合は、それでも作業できます!


最終目標は定かではありませんが、ドキュメント領域は、ドキュメント領域のみを印刷するオプションがある印刷を除き、いくぶんarbitrary意的です。ただし、オブジェクト領域のみを印刷することもできるため、ハードルを回避する方法になる場合があります。
-DA01

@ DA01さて、ビットマップにエクスポートするとき、ドキュメントは非常に役立つと思います(これは私がやっていることです)。
julien_c

ところで、角をドラッグすることなく、サイズを明示的に指定するオブジェクトのサイズを変更する方法はありますか?それは私が後にいることかもしれません:)
julien_c

1
それでも、それは任意のオプションです。エクスポート「ゾーン」と同じくらい簡単に収容ボックスを描くことができます。実際、それが私が通常行うことを好む方法です。リサイズのためとして、あなたはどちらか)> OBJECTに行く変換し、変換パレットに値を入力してください)あなたのサイズの変更またはbでトップと種類のステータスバーを使用して、あなたのオブジェクトを選択することができ
DA01

@julien_c:ここでのポイントは、オブジェクトが直線的なベクターアートであり、ラスターデバイス(またはファイル)に出力するまで、それ自体はサイズを持たないということです。そのサイズ(インチ、ピクセル、キュービッツ)は、実際には無関係です。
horatio

回答:


24

実行しているOSについては言及していません。私はUbuntuを使用していますが、librsvg2を正常に使用することができました。

Ubuntuにアクセスできる場合は、次のことができます。まず、librsvg2をインストールします。

sudo apt-get install librsvg2-bin

次に、cdSVGがあるディレクトリに移動し(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

これにより、サイズが200x200ピクセルのSVGの新しいバッチが作成され、「original-file-name.new.svg」として保存されます

寸法の計算はやや混乱します。SVGをSVGに変換するには、少し計算する必要があります。rsvg-convertの「高さ」および「幅」オプションは、pxではなくptを使用します。そのため、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

ところで、私はあなたがバッチモードでこれを多数のSVGに対して行う必要があると仮定しています。ていない場合でも、使用することができますrsvg-convertのような:rsvg-convert noun_project_1576.svg -w 320 -h 160 -f svg -o noun_project_1576-skewed.svg「noun_project_1576」という名前のソースファイルを取得し、200pxので400ピクセルなると「noun_project_1576スキュー」に名前を変更するためにそれを歪曲なります。
アナンダマート

@julien_c、フォローアップ:この提案を試してみましたが、うまくいきましたか?
アナンダ・マート

端末にコードをコピーして貼り付けますが、sedを返します。
e

「」を「」に変更し、ファイルへの保存エラーが発生しました:echo svgfile.svg | sed -e 's / svg $ / 2.svg'
raphie 14

すばらしい- librsvgテキストのバグが修正されるとさらに良くなる
...-

7

現在、Inkscapeでそれを行うネイティブな方法はありません。唯一の方法は、コンテンツとドキュメントを個別にサイズ変更することです。


2

ここで説明したように、いくつかの方法がありますが、実際に機能する方法の1つはを使用すること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は、Firefox 66、及びクロム73で私のために働いた
Socowi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.