实际上它是一张灰度图片,我想将像素值复制到一个数组中然后返回它。我已经尝试了很多,当我点击按钮时总是出错。
public class toarray //class1
{
public byte[,] bitmaptoarray(System.Drawing.Bitmap img)
{ //sentence below is always wrong with:Object reference not set to an instance of an object.
System.Drawing.Rectangle lockRect = new System.Drawing.Rectangle(0, 0, img.Width, img.Height);
BitmapData imgData = img.LockBits(lockRect, ImageLockMode.ReadWrite, img.PixelFormat);
byte[,] rband = new byte[img.Height, img.Width];
int rowOffset = imgData.Stride - img.Width * 3;
unsafe
{
byte* imgPtr = (byte*)imgData.Scan0.ToPointer();
for (int i = 0; i < img.Height; i++)
{
for (int j = 0; j < img.Width; j++)
{
rband[i, j] = imgPtr[2];
imgPtr += 3;
}
imgPtr += rowOffset;
}
img.UnlockBits(imgData);
img.Dispose();
}
return rband;
}
}//public class toarray end
我的测试代码
private void button3_Click(object sender, RoutedEventArgs e)
{
toarray test1 = new toarray();
byte[,] newarray = test1.bitmaptoarray(altitudeMap);
}