Asp.net(c#)怎样将.bmp图片转成32位点阵数据,用于将图片显示到LED屏上面,多谢!
解决方案 »
- 如何把这个Jsp 的方法改成asp.net 的方法呢?
- [玻璃鱼V]弱弱的问个关于PetShop的问题
- webconfig 的 identity impersonate="true" Excel关闭问题。。。
- 如何每天定时发布更新的内容?向各位高手求教
- label向listbox传值的一个问题待求解决?
- 我用了一个第三方控件Aspose.Pdf.v1.8.4.NET在客户端生成pdf文档时如何在文档中显示中文
- 做了个CHM帮助文档,能FLASH装进去吗?
- 我看到一个网页上有一个菜单折叠的功能,不知道是怎么实现的
- 如何再没有装.net但是装好framework的服务器上运行Asp.net程序呢?
- 关于冒泡事件的问题?
- 【新手问个蠢问题】VS2008里面多个WEB项目如何只启动一个?
- 字符串换行问题继续
然后用Bitmap.GetPixel 将每个点的颜色取出来。颜色中包含R,G,B数据。
再将R,G,B转换成你需要32bit的格式
我觉得已经很详细了,下面的代码没有经过编译,可能有错误。
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的用法你要查说明书了。
}
}
你说的"再转换成你需要的数据就可以了",我不知道拿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
只能从你给出的数据来分析。
图片是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就是结果
代码没有经过测试,只是阐述思路