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

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

補足:画像の表示方法が分からないという方は、まず「画像ファイルを表示する」をご覧ください。

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

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

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

VB.NET
コードを隠すコードを選択
'Bitmapオブジェクトの作成
Dim bmp As Bitmap =  New Bitmap("test.jpg")
'PictureBox1のGraphicsオブジェクトの作成
Dim g As Graphics =  PictureBox1.CreateGraphics()

'bmpを 100x100 の大きさにしたBitmapオブジェクトを作成
Dim small As Bitmap =  New Bitmap(bmp, 100, 100)
'表示
g.DrawImage(small, 0, 0)

'Graphicsオブジェクトを破棄
g.Dispose()
bmp.Dispose()
small.Dispose()
C#
コードを隠すコードを選択
//Bitmapオブジェクトの作成
Bitmap bmp = new Bitmap("test.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();

//bmpを 100x100 の大きさにしたBitmapオブジェクトを作成
Bitmap small = new Bitmap(bmp, 100, 100);
//表示
g.DrawImage(small, 0, 0);

//Graphicsオブジェクトを破棄
g.Dispose();
bmp.Dispose();
small.Dispose();

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

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

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

VB.NET
コードを隠すコードを選択
'サムネールイメージを作成
'Bitmapオブジェクトの作成
Dim bmp = New Bitmap("test.jpg")
'PictureBox1のGraphicsオブジェクトの作成
Dim g As Graphics = PictureBox1.CreateGraphics()

'サムネールイメージを作成大きさを100x100ピクセルにする
Dim myThumbnail As Image = _
    bmp.GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)
'表示
g.DrawImage(myThumbnail, 0, 0)

'Graphicsオブジェクトを破棄
g.Dispose()
bmp.Dispose()
myThumbnail.Dispose()
C#
コードを隠すコードを選択
//サムネールイメージを作成
//Bitmapオブジェクトの作成
Bitmap bmp = new Bitmap("test.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();

//サムネールイメージを作成大きさを100x100ピクセルにする
Image myThumbnail =
    bmp.GetThumbnailImage(100, 100, null, IntPtr.Zero);
//表示
g.DrawImage(myThumbnail, 0, 0);

//Graphicsオブジェクトを破棄
g.Dispose();
bmp.Dispose();
myThumbnail.Dispose();
  • 履歴:
  • 2010/9/7 「画像を縮小してイメージを作成する」でbmpのDisposeを呼び出していなかったのを修正。

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

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