DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

補間方法を指定して画像を拡大、縮小表示する

補足:画像を拡大、縮小して表示する方法が分からないという方は、まず「画像を拡大、縮小して表示する」をご覧ください。

Graphics.InterpolationModeプロパティにより、画像を拡大、縮小表示する時の補間方法を変更することができます。このInterpolationMode列挙体のメンバにはBicubic(双三次補間、バイキュービック法)、Bilinear(双一次補間、バイリニア法)、Default(既定のモード、Bilinear?)、High(高品質補間)、HighQualityBicubic(高品質双三次補間)、HighQualityBilinear(高品質双一次補間)、Invalid(QualityMode列挙体の要素Invalidと等価)、Low(低品質補間)、NearestNeighbor(最近傍補間、ニアレストネイバー法)があります。当たり前のことですが、一般的に高品質の補間方法を指定したときのほうが表示に時間がかかります。

アスキーデジタル用語辞典」によると、
「ニアレストネイバー法はその名の通り、単純に元の画像を水増し(拡大)、間引き(縮小)する方式。ジャギーが目立ちやすく階調のある画像のリサイズにはむいていない。バイリニア法、バイキュービック法は元の画像の周辺の複数の画像を数学的に算出して拡大、縮小する。バイキュービック法のほうが計算が複雑で精度が高く階調のある画像のリサイズにむいている。」
とのことです。

[VB.NET]
'補間方法を指定して画像を縮小して表示する
'Bitmapオブジェクトの作成
Dim image = New Bitmap("C:\サンプル.jpg")
'PictureBox1のGraphicsオブジェクトの作成
Dim g As Graphics = PictureBox1.CreateGraphics()
'補間方法として最近傍補間を指定する
g.InterpolationMode = _
    System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor
'画像を縮小表示
g.DrawImage(image, 0, 0, 150, 120)
'補間方法として高品質双三次補間を指定する
g.InterpolationMode = _
    System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
'画像を縮小表示
g.DrawImage(image, 160, 0, 150, 120)

'BitmapとGraphicsオブジェクトを破棄
image.Dispose()
g.Dispose()
[C#]
//補間方法を指定して画像を縮小して表示する
//Bitmapオブジェクトの作成
Bitmap image = new Bitmap(@"C:\サンプル.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();
//補間方法として最近傍補間を指定する
g.InterpolationMode = 
    System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
//画像を縮小表示
g.DrawImage(image, 0, 0, 150, 120);
//補間方法として高品質双三次補間を指定する
g.InterpolationMode = 
    System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
//画像を縮小表示
g.DrawImage(image, 160, 0, 150, 120);

//BitmapとGraphicsオブジェクトを破棄
image.Dispose();
g.Dispose();

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。