S3C2440开发板上SD显示BMP图片的显示之二
来源:互联网 发布:mac 重新安装程序 编辑:程序博客网 时间:2024/06/01 07:49
S3C2440开发板上BMP图片的显示之二
二、BMP图片显示测试程序设计
1、测试程序结构设计
(1)目的
确认对BMP结构的认识,加深对RGB颜色格式的理解。
能够在液晶上显示一个160 x 128 大小的图片。(正好与液晶的大小相同)
(2)实现方案
添加一个命令mptest。
在命令处理程序中,先打开图片文件,读入前面54个字节。检查“BM”标志,如果不是BMP退出。
将BMP文件的主要信息读入BMPINFO结构体,如果文件是压缩过的,也不支持,退出程序。
从127行开始,一行一行的读取位图的点阵数据,送液晶显示。
(3)程序结构和流程设计
先添加命令mptest及其处理程序。
在处理程序中,主要作如下处理:
res = f_open ( &BmpFile, (const char *)BmpStr, FA_READ);
res = f_read ( &BmpFile, (void *)UserBuf, 54, &ByteRead); //先读开始54字节,BMP文件头一般都这么大;
if ( LOAD_U16 ( UserBuf + BMPHEAD_FLAG )!= BMP_FLAG ){
Uart_PutString ( "File Format does't surport!" );
return; } //对比开头两个字节是否“BM”。
PicInfo.DataOffset=LOAD_U32(UserBuf+BMPHEAD_DATAOFFSET );//图像点阵数据区在文件中的偏移。
PicInfo.ColorOffset = LOAD_U32 ( UserBuf + BMPHEAD_INFHEADSIZE ) + 14; //图像颜色表在文件中的偏移 = 信息头的大小+ BMP文件头14个字节。一般为54字节。
PicInfo.BmpWidth = LOAD_U32 ( UserBuf + BMPHEAD_WIDTH );//图像的像素宽度
PicInfo.BmpHeight = LOAD_U32 ( UserBuf + BMPHEAD_HEIGHT ); //图像的像素高度。
PicInfo.BitPerPixel = LOAD_U16 ( UserBuf + BMPHEAD_BITPERPIXEL ); //每个像素占用的位数,真彩色24位,3个字节
PicInfo.Compressed = LOAD_U32 ( UserBuf + BMPHEAD_COMPRESSED ); //图像数据是否被压缩。
PicInfo.BytePerRow //每行像素占用字节数,因为4字节对齐,需要专门计算。
= (u32) ( (u32)( ( ( PicInfo.BmpWidth*PicInfo.BitPerPixel/8 ) + 3 )/4 )*4 ) ;
for ( Row = 128; Row > 0; Row-- ){ 一行一行倒序扫描
for ( Col = 0; Col < 160; Col++ ){ // 一行160个像素扫描
PixelOffset = PicInfo.DataOffset + ( PicInfo.BmpHeight - Row )\ * PicInfo.BytePerRow + ( PicInfo.BitPerPixel * Col )/8; //根据像素所在行列、每像素位数计算像素数据再文件中的偏移
res = f_lseek ( &BmpFile, PixelOffset );
res = f_read (&BmpFile, (void *)UserBuf, 3, &ByteRead); //在测试命令中,固定读取24位真彩色图,因此一次读取3个字节。
PixelColor =
(u16) ((UserBuf[0]>>3) + ( UserBuf[1]&0xFC )*8 + ( UserBuf[2]&0xF8)*256 ); //24位RGB格式转换为16位的 R:G:B = 5:6:5格式
LCD_SetPixel ( Col, Row-1, PixelColor );
}
}。
- S3C2440开发板上SD显示BMP图片的显示之二
- S3C2440开发板上BMP图片的显示之三
- S3C2440开发板上BMP图片的显示之一
- 单片机读取SD卡中BMP图片文件并送往TFT彩屏上显示(测试成功)(二)
- 开发板上显示图片
- 【Android开发】经典范例1-在GridView中显示SD卡上的全部图片
- VC MFC界面上显示BMP图片
- MFC-在控件上显示BMP图片
- MFC界面上显示BMP图片
- ImageView中显示SD卡上的图片或ImageView图片保存在SD卡上
- 在ImageView中显示SD卡上的图片
- ImageView中显示SD卡上的图片
- 在GridView中显示SD卡上的全部图片
- 读取SD卡里面的BMP文件 显示到TFT上
- 读取SD卡里面的BMP文件 显示到TFT上
- <arm开发板>arm开发板触摸屏bmp格式图片的显示
- 制作电子相册(sd卡读取bmp图片显示在tft彩屏上)读取fat32的步骤非常简单的方法
- S3C2440上MMC/SD卡驱动实例开发讲解(二)
- Qt 子窗口内嵌到父窗口中
- 普通人的编辑利器——Vim
- 面试
- 杭电2189
- 机器学习中的贝叶斯、概率分布
- S3C2440开发板上SD显示BMP图片的显示之二
- 重学C++ 用成员初始化器初始化常量数据成员
- Android 通过http协议数据交互
- 使用JQuery实现邮箱验证
- Android开发配置篇——Windows平台JDK安装
- RTP如何打包H264数据
- jQuery实现图片前进后退
- USACO:Shaping Regions
- android ListView 几个重要属性解析