は簡単です:
Bitmap bmp = (Bitmap)Bitmap.FromFile("c:\wherever\whatever.png");
// yes, the (Bitmap) cast is necessary. Don't ask me why.
あなたはビットマップロードしたら、あなたはビットマップのするLockBitsメソッドを使用して最も効率的に(アルファチャンネル情報を含む)の情報のすべてにアクセスすることができます(StackOverflowには多くのLockBitsコードサンプルがあります)。
更新は:ここではビットマップのデータピクセルごとにアクセスするためにするLockBitsを使用する方法を示したコードサンプルがあります:
System.Drawing.Imaging.BitmapData data =
bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
unsafe
{
// important to use the BitmapData object's Width and Height
// properties instead of the Bitmap's.
for (int x = 0; x < data.Width; x++)
{
int columnOffset = x * 4;
for (int y = 0; y < data.Height; y++)
{
byte* row = (byte*)data.Scan0 + (y * data.Stride);
byte B = row[columnOffset];
byte G = row[columnOffset + 1];
byte R = row[columnOffset + 2];
byte alpha = row[columnOffset + 3];
}
}
}
bmp.UnlockBits(data);
あなたはあなたのための「許可安全でないコード」コンパイラオプションを設定する必要がありますこのコードを使用するプロジェクト。また、ビットマップのGetPixel(x、y)メソッドを使用することもできますが、これは驚くほど遅いです。
Bitmap.FromFileが実際に存在しないため、キャストが必要です。これは、ベースクラスの静的メソッドImage.FromFileを呼び出しています。 – bobbymcr
@bobbymcr:確かに、BitmapはFromFileをオーバーライドしないので、base.FromFileを呼び出し、返されたImageをビットマップとしてキャストしますか? – MusiGenesis