[C#] アルファ値がついたビットマップ画像の読み込み (32ビットARGB bitmapの読み込み)
アルファ値がついたビットマップ画像の読み込み (32ビットARGB bitmapの読み込み)
このページのタグ:[C#] [ビットマップ] [アルファ]
C#でアルファ値のついたビットマップ画像を読み込みたい場合があります。
通常ビットマップの読み込みはファイルから読み込む場合
Bitmap bmp = new Bitmap("c:\data\alpha.bmp");
で読み込めます。しかし、この方法で読み込んだ場合ビットマップのPixelFormatはFormat32bppRgbとなってしまい、アルファチャンネルが無視されてしまいます。アルファチャンネルを含めてビットマップを読み込む場合は以下の方法で読み込みます。
コード
Bitmap bmp = new Bitmap(@"c:\data\alpha.bmp");

Rectangle bmBounds = new Rectangle(0,0,bmp.Width,bmp.Height);
BitmapData bmpd = bmp.LockBits(
  bmBounds, ImageLockMode.ReadOnly, bmp.PixelFormat);

Bitmap bmp2 = new Bitmap(bmpd.Width, bmpd.Height,
  bmpd.Stride, PixelFormat.Format32bppArgb, bmpd.Scan0);

bmp.UnlockBits(bmpd);
bmp.Dispose(); 
説明
Bitmap bmp = new Bitmap(@"c:\data\alpha.bmp");
にてビットマップの読み込みをします。
Rectangle bmBounds = new Rectangle(0,0,bmp.Width,bmp.Height);
にてビットマップ全体を範囲とするRectangleを定義します。
BitmapData bmpd = bmp.LockBits(bmBounds, ImageLockMode.ReadOnly, bmp.PixelFormat);
にてビットマップデータを取得します。ビットマップデータの取得で取得する範囲は先の行で定義したビットマップ全体とします。
Bitmap bmp2 = new Bitmap(bmpd.Width, bmpd.Height, bmpd.Stride, PixelFormat.Format32bppArgb, bmpd.Scan0);
にて新しいビットマップクラスbmp2を作成します。PixelFormatをFormat32bppArgbとしアルファ値を持つビットマップとします。ビットマップデータは先に取得したビットマップデータを用います。

bmp.UnlockBits(bmpd);
bmp.Dispose();
でビットマップデータのLockを解除しクラスをDisposeします。
bmp2がアルファ値がついたビットマップとなります。

登録日 :2010-07-13
最終更新日 :2010-07-17
このページのタグ:[C#] [ビットマップ] [アルファ]