从位图将RGB数据复制到数组中

时间:2015-11-27 22:51:18

标签: c# wpf

实际上它是一张灰度图片,我想将像素值复制到一个数组中然后返回它。我已经尝试了很多,当我点击按钮时总是出错。

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);
}

0 个答案:

没有答案