Bmp 轉成像素值 C#
时间: 2023-11-22 09:45:49 浏览: 124
在C#中将Bmp数据转为像素值,可以使用Getpix方法。该方法将Bmp数据锁定,然后将其复制到缓冲区中,最后解除锁定并返回缓冲区。如果Bmp为8位灰度图,则需要使用循环将像素提取出来。具体实现可以参考以下代码:
```
Bitmap bmp = new Bitmap(Image.FromFile(path)); // 加载图像
private byte[] Getpix(bmp) {
BitmapData bmdat = bmp.LockBits(new Rectangle(System.Drawing.Point.Empty, bmp.Size), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); // 锁定位图
byte[] buffer = new byte[bmdat.Stride * bmdat.Height]; //缓冲区,用来装载位图数据
Marshal.Copy(bmdat.Scan0, buffer, 0, buffer.Length); //复制位图数据
bmp.UnlockBits(bmdat); // 解除锁定
if (bmp.PixelFormat == PixelFormat.Format8bppIndexed) { // 如果是8位灰度图
byte[] bytes = new byte[bmp.Width * bmp.Height];
for (int i = 0; i < bytes.Length; i++) {
bytes[i] = buffer[i];
}
return bytes;
} else { // 如果是24位真彩色图
byte[] bytes3 = new byte[bmp.Width * bmp.Height * 3];
for (int i = 0; i < bytes3.Length; i++) {
bytes3[i] = (byte)(buffer[i]);
}
return bytes3;
}
}
```
阅读全文