我正在使用以下代码,我正在尝试将位图转换为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。任何帮助将不胜感激!
答案 0 :(得分:0)
看看这个链接: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.aspx 仔细考虑24位图像,因为(如果我记得很好),他们需要将行对齐到4个字节。