私はSVG形式のロゴ画像を持っていますが、複数の異なるサイズのpngファイルを生成する方法があるかどうか疑問に思っています。
たとえば、20の異なる幅と高さを設定すると、20のPNGファイルが生成されます。一度に5枚の画像をやらなくても大丈夫です。
イラストレーターをインストールしましたが、これを行う方法がわかりません。
助けてくれてありがとう!
Illustratorについてはわかりませんが、 Inkscapeコマンドラインオプション を使用すると簡単にできます。たとえば、Rubyの使用:
$ Ruby -e '[10,100,200].each { |x| `inkscape --export-png logo#{x}.png -w #{x} logo.svg` }'
受け入れられた答えは大丈夫です。 オプションに関する公式ヘルプ が利用可能です。また、基本的なシェルコマンドはここでうまく機能します:
for x in 10 100 200 ; do inkscape --export-png logo${x}.png -w ${x} logo.svg ; done
Windowsのコマンドラインで、コメントの@avalanchaからこの行を使用します
for %x in (100 200 300) ; do inkscape --export-png logo%x.png -w %x logo.svg ; done
Inkscapeを1回だけ起動して、はるかに高速にする方法(SSDでの5回のエクスポートで3倍)と、イメージを別のディレクトリにエクスポートする方法(Androidが使用する))は次のとおりです。
#!/bin/sh
# Converts the Inkscape icon file ic_launcher_web.svg to the launcher web & app png files.
PROJECT="My Project Name"
INPUT="source-assets/ic_launcher_web.svg"
MAIN="${PROJECT}/src/main/"
RES="${MAIN}res/"
DRAWABLE="${RES}/drawable"
inkscape --Shell <<COMMANDS
--export-png "${MAIN}ic_launcher-web.png" -w 512 "${INPUT}"
--export-png "${DRAWABLE}-mdpi/ic_launcher.png" -w 48 "${INPUT}"
--export-png "${DRAWABLE}-hdpi/ic_launcher.png" -w 72 "${INPUT}"
--export-png "${DRAWABLE}-xhdpi/ic_launcher.png" -w 96 "${INPUT}"
--export-png "${DRAWABLE}-xxhdpi/ic_launcher.png" -w 144 "${INPUT}"
quit
COMMANDS
これはbashシェルスクリプトです。 Windowsでは、MINGW32(GitHubのGitシェルなど)で実行するか、WindowsDOSシェルスクリプトに変換できます。 (DOSスクリプトの場合、「ヒアドキュメント」コマンドをDOSが処理できるものに変更する必要があります。複数行のテキストを一時ファイルにエコーするなどの手法については、 ヒアドキュメントfor Windowsバッチ? を参照してください。 。)
まだインストールしていない場合は、imagemagick
をインストールします。 OSXでは、具体的にはrsvg
のサポートが必要です。
brew install imagemagick --with-librsvg
また、inkscapeも必要です。そうしないと、画像がすべて黒くなります(透明な領域を除く)。
brew install homebrew/gui/inkscape
次に、次のように変換できるはずです。
convert -density 1536 -background none -resize 100x100 input.svg output-100.png
1536
は、適切な回答が見つからない場合の回避策です。私の実験では、-density
引数を省略すると、非常に小さい画像が作成されます。 -size 100x100
で画像を-density 1024
に変換すると、96x96
の出力画像が得られるので、代わりに密度をオーバーシュートし、ターゲットサイズにサイズ変更します。
TL; DRは、ターゲットサイズの1500倍の密度を使用し、そこから実行します。
そのコマンドを一括実行する方法はたくさんあります。これがシェルの1つです。
for s in 10 100 200 ; do convert -density 1536 -background none -resize ${s}x${s} input.svg output-${s}.png ; done
inkmake を見てください。私は実際に、SVGファイルをさまざまなサイズのPNGなどにバッチエクスポートするためだけにそのツールを作成しました。 Inkscapeに保存してから、ターミナルでinkmake
を実行するだけで、依存するすべてのPNGファイルがエクスポートされるため、これは設計でした。
私はまさにそれを行うためのツールを作成しました。必要な出力サイズとそのフォルダー構造を定義できます。したがって、svgファイルを含むフォルダーで実行するのと同じくらい簡単で、pngファイルがプロジェクトの正しいフォルダーに追加されます。
https://github.com/Inrego/SvgToPng
お役に立てば幸いです。