Androidだとhdpi、xhdpi、xxhdpi、xxxhdpi
UWPだとScale 100、125、150、200、400
同じデータから一気にpngに出力したい!!
って時が多くあったので作りましょう。
Androidはsvg1個あれば大丈夫になったというのにUWPと来たら時代遅れなんだから…
先に言っておくと成果物はこちら。
以下はMagick.NETを使う際にハマった点などを交えてMagick.NETの使い方紹介になります。
github.com
ダウンロード
Nugetから落としますQ16のOSに合わせたものをDLしてください。
準備
Debugとか書いてある右にAnyCPUとか書いてあると思うので先ほどと同じようにOSに合わせて構成マネージャから切り替えてください。
ここでちゃんとやらないと実行時エラーになります。ハマりました。
使う
// 読み込む設定をします。 var magicSettings = new ImageMagick.MagickReadSettings(); // [罠]ここでdpiを指定します。指定しないと画質が荒くなります。1000としたらInkscapeで出力した時よりも綺麗になりました。 magicSettings.Density = new ImageMagick.Density(dpi); // [罠]ここで背景色を透明にしないと透明部分が全部真っ白になります。 magicSettings.BackgroundColor = new ImageMagick.MagickColor("#00000000"); // さて、いよいよ読み込みです。 using (var magickImage = new ImageMagick.MagickImage(path, magicSettings)) { // 出力後のサイズを指定します。 magickImage.Scale(width, height); // 読み込みと出力フォーマットが異なるならここで指定します。 magickImage.Format = ImageMagick.MagickFormat.Png; // 変わらなっかたが念のためQualityを100にしておきました。 magickImage.Quality = 100; // 出力 magickImage.Write(outPath); }
こんな感じで使います。
ハマって結構時間かかってしまいました。