c# – 像素数据到图像

前端之家收集整理的这篇文章主要介绍了c# – 像素数据到图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这种格式的列表像素
ArrayList list = new ArrayList();
list.add(Red);
list.add(Blue);
list.add(Green);

我有很多像这样的价值观.我想将数组列表转换为图像..尝试了很多,但没有找到任何适当的材料.

编辑:这可能有所帮助:

List<byte> pic = new List<byte>(); 
for (int j = 0; j < headdata.Count; j++)
{ 
    if(headdata.ElementAt(j).getHead() == i) 
    { 
        pic.Add((byte)headdata.ElementAt(j).getRed());
        pic.Add((byte)headdata.ElementAt(j).getGreen());
        pic.Add((byte)headdata.ElementAt(j).getBlue()); 
    }
}

解决方法

首先,正如我在评论中所说,最好使用List而不是ArrayList来避免装箱/拆箱.

然后,您需要bpp(每像素位数)和宽度和高度来创建图像.

如果你有所有这些值,那么你可以得到起始像素索引:

int i = ((y * Width) + x) * (depth / 8);

例如:

List<byte> bytes = new List<byte>(); // this list should be filled with values
    int width = 100;
    int height = 100;
    int bpp = 24;

    Bitmap bmp = new Bitmap(width,height);

    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {   
            int i = ((y * width) + x) * (bpp / 8);
            if(bpp == 24) // in this case you have 3 color values (red,green,blue)
            {
                 // first byte will be red,because you are writing it as first value
                 byte r = bytes[i]; 
                 byte g = bytes[i + 1]; 
                 byte b = bytes[i + 2]; 
                 Color color = Color.FromArgb(r,g,b);
                 bmp.SetPixel(x,y,color); 
            }

        }
    }

您可以使用其他库来更快地创建位图和写入值. (SetPixel()非常慢.See)

猜你在找的C#相关文章