C#画像処理

【C#】Bitmapの解像度(DPI)の取得設定

画像ファイルのプロパティをエクスプローラーで表示すると、下図のように水平方向の解像度、垂直方向の解像度が表示されますが、ほとんどの場合、Windowsでは96dpiと表示される場合が多いのですが、この解像度の値をC#で取得、設定(変更)してみたいと思います。

 

C# DPIの設定

 

解像度を設定するにはBitmapクラスのSetResolutionメソッドを用いて、以下のように設定します。

var bmp = new Bitmap("Mandrill.bmp");
bmp.SetResolution(400, 400);

解像度を取得するにはGetResolutionではなくて、HorizontalResolutionプロパティVerticalResolutionプロパティが用意されています。

 

(コード例)

Console.WriteLine(String.Format("水平分解能 = {0}, 垂直分解能 = {1}", bmp.HorizontalResolution, bmp.VerticalResolution));

(実行結果)

C# DPIの設定

 

試しに下記のようなコードで、Bitmap,Jpeg,Png,Tiffファイルで解像度の設定が有効になっているか?確認してみましたが、どれも設定されていました。

var bmp = new Bitmap("Mandrill.bmp");
bmp.Save("Mandrill400.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
bmp.Save("Mandrill400.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Save("Mandrill400.png", System.Drawing.Imaging.ImageFormat.Png);
bmp.Save("Mandrill400.tif", System.Drawing.Imaging.ImageFormat.Tiff);

ただし、Bitmapファイル(*.bmp)だけはファイルのプロパティで解像度が表示されなかったので、エクスプローラーで表示項目を増やして解像度を確認しました。

 

C# DPIの設定

 

画像処理のためのC#テクニックへ戻る

コメント

タイトルとURLをコピーしました