我处理位图我读取bmp每像素24位,宽度320高度240,位置54中图像数据偏移开始的标题,使用c#
在bmp数组中的位置54我访问数据,我将数据存储在新数组中:
struct pix //structure for pixel in bmp image
{
public byte r;//Red
public byte g;//Green
public byte b;//Blue
};
Bitmap img = new Bitmap(opendialog1.FileName);
string filename = opendialog1.FileName;
byte[] bmp = File.ReadAllBytes(filename);
int i=54;
pix[ , ] bmpdata = new pix[img.Height, img.Width]; //create array of structure
for (int row = 0; row < img.Height; row++)
{
for (int col = 0; col < img.Width; col++)
{
bmpdata[row, col].r = bmp[i];
bmpdata[row, col].g = bmp[i + 1];
bmpdata[row, col].b = bmp[i + 2];
i += 3;
}
这是将数据从bmp数据复制到新数组中的正确方法,我使用c#窗口形式吗?
答案 0 :(得分:0)
不,这不是你获得像素数据的方式(颜色信息)。
通过调用GetPixel(x,y)
您也可以与此方法进行比较:
var pixels = new Color[img.Height*img.Width];
for (int row = 0; row < img.Height; row++)
{
for (int col = 0; col < img.Width; col++)
{
pixels[row + col] = img.GetPixel(col, row);
}
}
如果您只想要字节数据,请使用img.Save()
保存到新的MemoryStream
,例如......