将位图转换为RGB像素

时间:2014-04-16 17:25:14

标签: c# bitmap

我正在使用以下代码,我正在尝试将位图转换为RGB像素数组(0-255)。在下面的代码中,我对伪代码的评论需要帮助:

    private class Rgb
    {
        public byte Red { get; set; }
        public byte Green { get; set; }
        public byte Blue { get; set; }

        public Rgb(byte red, byte green, byte blue)
        {
            Red = red;
            Green = green;
            Blue = blue;
        }
    }

    private class MyImage
    {
        private Rgb[] _pixels;
        private readonly int _width;
        private readonly int _height;

        public int Width
        {
            get { return _width; }
        }

        public int Height
        {
            get { return _height; }
        }

        public Rgb[] Pixels
        {
            get { return _pixels; }
        }

        public MyImage(int width, int height)
        {
            _width = width;
            _height = height;

            _pixels = new Rgb[_width*_height];
        }

        public static MyImage FromBitmap(Bitmap bmp)
        {
            var myImage = new MyImage(bmp.Width, bmp.Height);

            int i = 0;
            // foreach(pixel in myImage)
            // {
            //     myImage._pixels[i] = new Rgb(pixel.red, pixel.green, pixel.blue);
            //     i++;
            // }

            return myImage;
        }

        public static Bitmap ToBitmap(MyImage myImage)
        {
            var bitmap = new Bitmap(myImage.Width, myImage.Height);

            int i = 0;
            // foreach(pixel in myImage)
            // {
            //     bitmap.pixel[i].red = myImage.Pixels[i].Red;
            //     bitmap.pixel[i].green = myImage.Pixels[i].Green;
            //     bitmap.pixel[i].blue = myImage.Pixels[i].Blue;
            //     i++;
            // }

            return bitmap;
        }

我坚持如何从Bitmap获取像素数据。另外,我需要能够反过来从像素数据创建一个Bitmap。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

看看这个链接: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.aspx 仔细考虑24位图像,因为(如果我记得很好),他们需要将行对齐到4个字节。