BMP转成C语言数组文件工具(用image2lcd代替bmp2h.exe)

http://blog.csdn.net/kangear/article/details/8577303


学习裸机,到LCD这了,因为LCD屏和别人不一样,参数搞定后图片也要自己弄一个,最先想想来了mini2440光盘中的有一个bmp2h.exe,用它可以的。不过有一点不行,就如下这图:


出现这种情况我还反复试了其它图也都是这种情况,刚开始我做了三个假设:1屏有问题;2LCD参数有问题  3这个制作这个数组有问题

排除第一个就是烧上系统启动查看正常,第一种可能排除。

第二个和第三个不好区分,不过还是找最好排除的来弄。找一个其它的制作BMP TO C file 的软件,找了好些个,结果还引出了其它问题,它们还不如这个呢!这个image2lcd这个用过一次不行,不过在找其它东西看到设置方法,就又用了一次,结果OK了,现在先把设置记下来,再去弄清楚里边的原理。图如下:


我出现的差错是没有选上  高位在前(MSB Fist),结果显示的颜色不正常。是在这里的4楼看到了蛛丝马迹。结果一试还真就OK了截图如下:


这样这个问题就解决了,看来这个软件涉及的面广,不是傻瓜式的。再给bmp2h.exe上个最后一张图:


Image2Lcd:这里

Image2Lcd 是一款工具软件,它能使你把各种来源的图片转换成特定的数据格式以用来匹配单片机系统所需要的显示数据格式。Image2Lcd支持的输入图像格式包括: BMP, WBMP, JPG, GIF, WMF, EMF, ICO, 等等。Image2Lcd的输出数据类型包括定制的二进制类型、C语言数组类型和标准的BMP格式、WBMP格式。Image2Lcd能可视调节输入图象的数据扫描方式、灰度(颜色数)、图像数据排列方式、亮度、对比度、等等。对于包含了图像头数据保存的图像数据文件,Image2Lcd能重新打开作为输入图像。

特点

  • 支持所有的点阵LCD所需要的特殊显示数据格式。
  • 可视调节输出图像效果。
  • 256色模式下支持用户调色板(TIFF格式)。
  • 支持4096色图像输出。
  • 以二进制类型和C语言数组类型(文本)两种方式保存数据,方便单片机开发者的不同需要。
  • 保存的数据支持LSB First/MSB First(很多单片机系统WORD高低字节排列与PC相反)。
  • 可以保存图像为指定颜色数的BMP格式图像。
  • 即时图示当前设置的数据格式。 
(经过尝试,格式可以是以上的,但是是大小必须一致!)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将一个bitmap转换成C语言数组可以按照以下步骤进行: 1. 使用图片处理软件打开需要转换的bitmap文件,并将其转化为灰度图像。 2. 将灰度图像转换为黑白图像,即将所有非黑色像素点设置为白色。 3. 使用C语言编写一个程序,读取经过处理后的黑白图像文件,并将像素值转换成C语言数组中的元素。 4. 将每个像素点的值存储在C语言数组中。 下面是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; unsigned char *bitmap; unsigned char *bmp_array; int width, height; int i, j, k; fp = fopen("image.bmp", "rb"); if(fp == NULL) { printf("Cannot open file.\n"); return 1; } fseek(fp, 18, SEEK_SET); fread(&width, sizeof(int), 1, fp); fread(&height, sizeof(int), 1, fp); fseek(fp, 54, SEEK_SET); bitmap = (unsigned char*) malloc(sizeof(unsigned char) * width * height); bmp_array = (unsigned char*) malloc(sizeof(unsigned char) * width * height); fread(bitmap, sizeof(unsigned char), width * height, fp); fclose(fp); for(i = 0; i < height; i++) { for(j = 0; j < width; j++) { k = i * width + j; bmp_array[k] = bitmap[k * 3]; } } free(bitmap); free(bmp_array); return 0; } ``` 上述代码中,我们首先打开了一个名为“image.bmp”的bitmap文件,并读取了该文件的宽度和高度。 然后,我们使用malloc函数动态分配了两个数组——bitmap和bmp_array,分别用于存储bitmap文件中的像素值和C语言数组中的元素。 接着,我们从文件中读取了像素值,并将每个像素点的红色、绿色、蓝色值的平均值存储在了bmp_array数组中。 最后,我们释放了动态分配的内存空间,结束了程序运行。 需要注意的是,这里的代码仅适用于24位真彩色的bitmap文件。如果需要转换其他类型的bitmap文件,需要根据文件格式进行相应修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值