回答:
ImageMagickには、LinuxおよびWindows(およびその他)で使用可能なコマンドラインツールがあります。変換ツールは、便宜上「変換」と呼ばれます。使用方法のドキュメントを次に示します。
そして、ここからWindowsインストーラーを入手できます。
ImageMagickは、画像が関係するバッチタスクだけにすぐに関連付けるべきではありません。特に、ImageMagickがSVG変換の貧弱なソリューションであるこの場合。
コマンドラインでInkscapeを試してみてください:
inkscape in.svg --export-png=out.png
-z
オプションを使用することを忘れないでください。
コマンドラインはそのままでは機能せず、さらに100個のファイルを変換する必要がありました。Windows 7でどのように動作するかを次に示します。
inkscapeをインストールします-ポータブルなものではありません!
1つのフォルダーにすべてのsvgファイルをコピーします(例:「C:\ svgs \」):
次のconvert.bat
行を内部に含むファイルを作成します。
FOR %%A IN (*.svg) DO "C:\Program Files (x86)\Inkscape\inkscape.exe" --export-png=%%A.png
(インストールの正しいフォルダーを指します):
管理者としてCMDを開きます!これを行うには、WINキーを押して「cmd」と入力し、「cmd.exe」を右クリックして「管理者として実行」を選択します。
「C:\ svgs \」に移動して入力しますconvert.bat
-すべてのsvgファイルはPNGに変換されます。
Windowsエクスプローラーを使用して、変換されたPNGファイルを検索します。私のPCでは、それらはフォルダにありました:C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
それが役に立てば幸いです。
コマンドラインの解像度は、私が見ることができる範囲でしか設定できないため、InkscapeBatchツールを使用することになりました。そこで、すべての画像を比較的大きくするようにDPIを設定できました。
正しい設定を指定する必要があります。指定しないと機能しません。ここに私がやったことがあります:
[完了]を押した後、ツールバーの[バッチコンバーターを開始...]ボタンを押す必要があります。
%%A
(入力ファイル名として)別のものがありません。また、なぜ管理モードでのみ動作するはずだと思いますか?
--export-dpi=100
100は、解像度の番目の値である
InkscapeBatchはWindowsでジョブを実行します。Inkscapeが必要です。
SVGからPNGへの変換の場合、cairosvg(https://cairosvg.org/)の方がImageMagickよりも優れていることがわかりました。ディレクトリ内のすべてのファイルにインストールして実行する手順。
pip3 install cairosvg
.svgファイルを含むディレクトリでPythonシェルを開き、次を実行します。
import os
for file in os.listdir('.'):
name = file.split('.svg')[0]
cairosvg.svg2png(url=name+'.svg',write_to=name+'.png')
これにより、元の.svgファイルが上書きされないようになりますが、同じ名前が保持されます。その後、すべての.pngファイルを別のディレクトリに移動できます。
$ mv *.png [new directory]
これに2時間近く取り組んだ後、私はInkscapeに落ち着きました。多くの異なる解像度で多数のファイルをバッチ変換する必要があるため、Powershellスクリプトを作成しました。106個のSVGを使用すると、コンピューターが約5秒間フリーズするため、これを使用するときは注意してください。
# ENTER THE FULL PATH TO THE INKSCAPE EXECUTABLE
$inkscapeExe = "C:\Program Files\Inkscape\inkscape.exe"
# ENTER THE PATH TO THE FOLDER CONTAINING THE SVGs
$svgFolder = "C:\Images\SVG"
# ENTER THE DESIRED WIDTH
$width = 120
# ENTER THE DESIRED HEIGHT
$height = 120
$svgFiles = Get-ChildItem $svgFolder -Filter *.svg
foreach ($svgFile in $svgFiles)
{
$inputParam = $svgFile.FullName
$outputParam = "--export-png=" + $svgFile.FullName + "-" + $width + "x" + $height + ".png"
$widthParam = "-w" + $width
$heightParam = "-h" + $height
& $inkscapeExe $inputParam $outputParam $widthParam $heightParam
}
&
オペレータは、新しいプロセスを開始し、あなたがSVGファイルを持っているように、このスクリプトは、多くの新しいinkscape.exeプロセスとして作成されますので、すぐに続けています。これにより、コンピューターがしばらく非常に遅くなります。
| Out-Null
で始まる行の最後に配置&
すると、inkscape.exeコマンドを1つずつ実行するように強制されます。
Bash / Ubuntu for WindowsのSVGがあるフォルダーで、以下を使用できます。ただし、ImageMagickは最初にラスタライズしてからサイズ変更するため、奇妙なアーティファクトが生じます...
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
うまく機能していると思われるInscapeベースのソリューションも参照してください(別のスレッドから、リンクが失われました)。 mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
find -name "*.svg" -exec inkscape {} -e {}.png \;
、私はこのバージョンを好むものの:ls | grep ".svg" | xargs -I file inkscape file -e file.png
ファイルがアルファベット順に処理されるため-これはそうではありません、使用している場合find
ImageMagickはWindowsで利用でき、SVGとPNGおよびICO(他の)の間で変換できます。出力ファイルのサイズおよびその他の属性を設定できます。
バッチを実行するために機能する単一のコマンドが見つからなかったため、ファイルリストを生成して一連のコマンドを作成することで、バッチを機能させることができました。これらの手順は、Windowsのすべてのバージョンで機能するはずです。すべての入力指示は引用符を除外し、その間のすべてを含みます。
これを行うには、Inkscape、MS Excel、または同等のスプレッドシートエディターとリストジェネレーターが必要です。素晴らしい小さなフリーウェアリストジェネレーターがここにあります:https : //www.portablefreeware.com/?id=1171
これを正しく行った場合、次のようなファイル名ごとに1行が必要です。| inkscape C:\ SVG \ | Filename1.svg | --export-png = C:\ PNG \ | Filename1.png |
誰かの生活が楽になることを願っています。ジェームス
Kaiの答えは近いが、私には役に立たなかった。ただし、2、3のわずかな調整により、これは初めて完全に機能しました。
convert.bat
convert.bat
お気に入りのテキスト/コードエディターで開き、次を入力します。FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(inkscape.exe
場所はお使いのPCの実行可能プログラムの場所と一致する必要があることに注意してください;前の2番目--export-png
は%%A
-変換されるSVGファイルです)
convert.bat
して実行すると、変換の結果がエコーアウトされます。新しいファイルを表示するには、Windowsフォルダーを更新する必要があるかもしれませんが、それらはすべて元のSVGと同じ場所に作成されている必要があります。
何らかの理由で、imagemagickまたはinkscapeが動作しませんでした。このサイトを手動で使用しただけで、変換するファイルは12個しかありませんでした:http : //svgtopng.com/はとても役に立ちました。
特定のディレクトリ内のすべてのsvgファイルをicoファイルに変換するImageMagickベースのソリューションを次に示します。
mogrify -format ico -density 1200 -background transparent -trim -resize 256x256 -gravity center -extent 256x256 -define icon:auto-resize *.svg
説明:
mogrify
:に似てconvert
いますが、複数のファイルをバッチ処理できます。-format ico
:ターゲットファイル形式。.ico
元のファイルを上書きする代わりにファイルを作成します(デフォルトでmogrifyが行うように)。-density 1200
:ImageMagickがSVGをラスタライズするターゲットピクセルサイズを指定できないため(最初にデフォルトの密度でラスタライズしてからスケーリングする)、非常に高い解像度(1200dpi)でSVGをラスタライズして、画像がされますダウンスケール 256×256の代わりに、スケールアップに。-background transparent
:背景は透明としてレンダリングされます。-trim
:画像の周囲の既存の境界線を削除します。-resize 256x256
:画像を拡大縮小して、縦横比を保ちながら最長辺が256ピクセルになるようにします。-gravity center -extent 256x256
:キャンバスを拡大し、短辺にも256pxを確保します。既存の画像は中央揃えになります。これが必要なのは、ICOファイルの基礎として正方形の画像が必要だからです。-define icon:auto-resize
:256x256の画像だけでなく、推奨されるすべての縮小解像度(32x32など)もICOファイルに含めます。ここで与えられるほとんどの回答は、質問の希望するサイズの部分を無視します。convert
SVGを「アップスケーリング」するときに満足のいく結果を得ることができませんでした。inkscape
より良い仕事をし、背景の透明度も保持します。
ユースケースに応じて、次のオプションのいずれかを使用します。
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
幅と高さの両方を指定しても、アスペクト比は保持されないことに注意してください。
一度に多くのファイルを変換するには、ユースケースに合わせて以下を調整します(in bash
またはcompatible):
for f in *.svg; do
inkscape $f -d 300 -e ${f%.*}.png
done
apt install imagemagick