Asp.net(c#)怎样将.bmp图片转成32位点阵数据,用于将图片显示到LED屏上面,多谢!

解决方案 »

  1.   

    将bmp构建一个Bitmap 实例。
    然后用Bitmap.GetPixel 将每个点的颜色取出来。颜色中包含R,G,B数据。
    再将R,G,B转换成你需要32bit的格式
      

  2.   

    大哥,能不能详细点,能不能提供些代码,发至[email protected] ,多谢了!
      

  3.   

    大哥,能不能详细点,能不能提供些代码,发至[email protected] ,多谢了!(上面一个引用错了)
      

  4.   


    我觉得已经很详细了,下面的代码没有经过编译,可能有错误。
    Bitmap bmp = new Bitmap("c:\\a.bmp")  //有很多重载构造函数,选择一个合适的
    for(int i = 0; i < bmp.Width; ++i)
    {
        for(int j = 0; j< bmp.Height; ++j)
        {
            Color pixel = bmp.GetPixel(i,j);
            //这里就可以通过pixel.R, pixel.G, pixel.B取得该点的RGB值了。
             //再转换成你需要的数据就可以了。
             //32位点阵数据应该就是一个点用4个字节来表示,具体每bit的用法你要查说明书了。
        }
    }
      

  5.   

    先感谢楼上的findcaiyzh
    你说的"再转换成你需要的数据就可以了",我不知道拿RGB值怎样去转成我要的数据.LED屏厂商给我的示意图是这样的:
    图片是16*16的BMP,需要组成类似于以下32个点阵数据格式传给屏,屏就能正常显示
    E7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 CF C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7
      

  6.   

    我看不到图片。
    只能从你给出的数据来分析。
    图片是16*16也就是256个点。
    数据时32 bytes。也就是256bit.
    因此应该类似黑白图片如果对应的bit是1则黑点,为0则为白点。
    因此
    Bitmap bmp = new Bitmap("c:\\a.bmp"); //有很多重载构造函数,选择一个合适的
                BitArray bitArray = new BitArray(256);
                int bitArrayPos = 0;
                for(int i = 0; i < bmp.Width; ++i)
                {
                  for(int j = 0; j< bmp.Height; ++j)
                  {
                      Color pixel = bmp.GetPixel(i,j);
                      //这里就可以通过pixel.R, pixel.G, pixel.B取得该点的RGB值了。
                      //再转换成你需要的数据就可以了。
                      //32位点阵数据应该就是一个点用4个字节来表示,具体每bit的用法你要查说明书了。
                      if (要显示此pixel) //这个点是不是显示,你需要自己定义逻辑。
                      //例如if ((pixel.R>0) || (pixel.G>0) || (pixel.B>0)) 
                      //表示只要点不是黑色就都显示出来
                      {
                          bitArray[bitArrayPos] = true;
                      }
                      else
                      {
                          bitArray[bitArrayPos] = false;
                      }                  bitArrayPos++;
                  }
                }            byte[] res = new byte[32];
                bitArray.CopyTo(res, 0);            //res就是结果
    代码没有经过测试,只是阐述思路