16x16のサイズが定義されているSVGファイルがあります。ImageMagickの変換プログラムを使ってPNGに変換すると、16x16ピクセルのPNGになってしまい、小さすぎます。
convert test.svg test.png
出力されるPNGのピクセルサイズを指定する必要があります。sizeパラメータは無視されるようで、
-scaleパラメータはPNGに変換された**後にPNGをスケーリングします。今までの最良の結果は
-density` パラメータを使用することで得られました。
convert -density 1200 test.svg test.png
しかし、私は満足していません。というのは、密度の値を計算するために数学をすることなく、出力サイズをピクセルで指定したいからです。そこで、次のようにしたいと思います。
convert -setTheOutputSizeOfThePng 1024x1024 test.svg test.png
では、ここで使用しなければならない魔法のパラメータは何でしょうか?
私はこの例でImageMagickから良い結果を得ることができませんでしたが、LinuxやWindowsではInkscapeが良い仕事をしてくれます。
inkscape -z -e test.png -w 1024 -h 1024 test.svg
このコマンドで16x16のSVGを200x200のPNGにスケーリングした結果が以下の通りです。
.
.
参考までに、私のInkscapeのバージョンは(Ubuntu 12.04)です。
Inkscape 0.48.3.1 r9886 (Mar 29 2012)
で、Windows 7では、それは
Inkscape 0.48.4 r9939 (Dec 17 2012)
これは完璧ではありませんが、仕事はできます。
convert -density 1200 -resize 200x200 source.svg target.png
基本的には、リサイズが適切な品質で行われるように、DPIを十分に高くします(経験的/安全な推測で構いません)。私はこれに対する適切な解決策を見つけようとしていましたが、しばらくして、これは私の現在の必要性に十分であると判断しました。
Note: 与えられた解像度を強制的に使用するには200x200!