私はかなり基本的なことをするのに苦労しています:
Inkscapeで、ドキュメントとそのコンテンツ(図面)を同時にサイズ変更するにはどうすればよいですか?
ちょっとしたコンテキスト:実際の図面のサイズを明示的に変更せずに、The Noun Project(通常は100x100pxのドキュメント)からかなり多数のSVGドキュメントのサイズを変更したい。
注:コマンドラインソリューションがある場合は、それでも作業できます!
私はかなり基本的なことをするのに苦労しています:
Inkscapeで、ドキュメントとそのコンテンツ(図面)を同時にサイズ変更するにはどうすればよいですか?
ちょっとしたコンテキスト:実際の図面のサイズを明示的に変更せずに、The Noun Project(通常は100x100pxのドキュメント)からかなり多数のSVGドキュメントのサイズを変更したい。
注:コマンドラインソリューションがある場合は、それでも作業できます!
回答:
実行しているOSについては言及していません。私は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
これにより、サイズが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
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スキュー」に名前を変更するためにそれを歪曲なります。
librsvg
テキストのバグが修正されるとさらに良くなる
ここで説明したように、いくつかの方法がありますが、実際に機能する方法の1つはを使用することviewBox
です。SVGタグの内容を次のように変更するだけです。
<svg
width="1280"
height="800"
viewBox="0 0 1280 800">
<!-- More markup... --!>
</svg>
どのようなviewBox
行いは、それが文書のための内部座標系を定義しています。その後、必要に応じて属性width
とheight
属性を変更するだけで、ドキュメントを簡単にスケーリングできます。
ただし、いくつかの欠点があることに注意してください。一つには、これが機能する特定のコンテキスト、特に何らかの方法でマークアップページにSVGドキュメントを直接含める場合のみです。これで<img>
タグを使用すると、予期しない結果が生じる場合があります。これを行うための最善の方法を見つけるには、独自の調査を行う必要があります。