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

サムネールイメージの作成

注意:画像の表示方法が分からないという方は、まず「コントロールやフォームに画像を表示する」をご覧ください。

ここでは、サムネールイメージ(縮小されたイメージ)を作成する方法を紹介します。

画像を縮小してイメージを作成する

ただ単に縮小(あるいは拡大)イメージを作成したいときは、次のようにBitmapオブジェクト作成時にその大きさを指定することにより可能です。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'画像ファイルを読み込んで、Bitmapオブジェクトを作成
Dim bmp As New Bitmap("test.jpg")
'bmpを 100x100 の大きさにしたBitmapオブジェクトを作成
Dim small As New Bitmap(bmp, 100, 100)

'PictureBoxに表示
PictureBox1.Image = small
C#
コードを隠すコードを選択
//using System.Drawing;

//画像ファイルを読み込んで、Bitmapオブジェクトを作成
Bitmap bmp = new Bitmap("test.jpg");
//bmpを 100x100 の大きさにしたBitmapオブジェクトを作成
Bitmap small = new Bitmap(bmp, 100, 100);

//PictureBoxに表示
PictureBox1.Image = small;

Image.GetThumbnailImageメソッドを使用する

さらに、Image.GetThumbnailImageメソッドを使用することにより、サムネイルイメージを作成することが出来ます。この時、画像に「埋め込みサムネイルイメージ」が含まれる場合、このメソッドは埋め込みサムネイルを取り出して要求されたサイズに変更しますが、画像に「埋め込みサムネイルイメージ」が含まれない場合、このメソッドは元のイメージのサイズを変更してサムネイルイメージを作成します。

またMSDNには、次のような記述があります。

「要求されたサムネイル イメージのサイズが 120 x 120 程度の場合に効率よく処理を行います。埋め込みサムネイルが含まれる Image オブジェクトからサイズの大きいサムネイル イメージ (300 x 300 程度) を作成するように要求した場合、サムネイル イメージの品質はかなり低下します。この場合は、 DrawImage を呼び出して、元のイメージのサイズを変更した方が、埋め込みサムネイルのサイズを変更するよりも高い品質を得られます。」

MSDNの記述にあるDrawImageを呼び出して画像を縮小する方法は、「画像を拡大、縮小(スケーリング)して描画する」で説明しています。

以下にGetThumbnailImageメソッドを使った例を示します。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'サムネールイメージを作成

'画像ファイルを読み込んで、Bitmapオブジェクトを作成
Dim bmp As New Bitmap("test.jpg")
'大きさを100x100ピクセルのサムネールイメージを作成
Dim small As Image = bmp.GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)

'PictureBoxに表示
PictureBox1.Image = small
C#
コードを隠すコードを選択
//using System.Drawing;

//サムネールイメージを作成

//画像ファイルを読み込んで、Bitmapオブジェクトを作成
Bitmap bmp = new Bitmap("test.jpg");
//大きさを100x100ピクセルのサムネールイメージを作成
Image small = bmp.GetThumbnailImage(100, 100, null, IntPtr.Zero);

//PictureBoxに表示
PictureBox1.Image = small;
  • 履歴:
  • 2010/9/7 「画像を縮小してイメージを作成する」でbmpのDisposeを呼び出していなかったのを修正。
  • 2012/8/1 表示する方法を、PictureBox.Imageプロパティを使った方法に変更。

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

  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。