微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种嵌入式SD卡图片浏览器的设计与实现

一种嵌入式SD卡图片浏览器的设计与实现

时间:01-19 来源:互联网 点击:

应彩色项,取出索引对应的颜色。

③ 从文件读取的RGB数据,转换为TFT支持的格式(本系统选用的TFT支持RGB565格式)。在液晶上画出该像素,直到画完整个图像为止。

3.3 GIF格式的分析

一个GIF文件的结构可分为文件头(file header)、GIF数据流(GIF data stream)和文件终结器(trailer)3个部分。GIF文件格式采用了可变长度的LZW压缩编码。LZW压缩有3个重要的对象:数据流(CharStream)、编码流(CodeStream)和编译表(String Table)。在编码时,数据流是输入对象(图像的光栅数据序列),编码流就是输出对象(存储在GIF文件的图像数据)。在解码软件实现上流程与JPG、BMP相类似,都是先调用GIF格式文件再创建进行GIF_LZW解码,最后在TFT上显示出来。需要注意的是,在解码过程中,编码流则是输入对象,数据流是输出对象。编译表是在编码和解码时都须要借助的对象。

4 模块化测试

整个系统采用模块化的设计,利用μC/OSII操作系统进行任务管理。以任务Task_BMP为例,对24位真彩色BMP位图的显示进行测试,程序如下:

Task_BMP{

f_mount(0, fs);

res = f_open(fsrc, "ab.BMP", FA_OPEN_EXISTING | FA_READ);

res = f_read(fsrc, bmp, sizeof(bmp), br);

if((bmp.pic_head[0]=='B')(bmp.pic_head[1]=='M')){//用文件头判断是否为BMP文件

   res= f_lseek(fsrc,((bmp.pic_data_address_h16)|bmp.pic_data_address_l));//采用了Windows的BMP格式,BMP原点在左下角

for(tx= bmp.pic_h_l;tx>0;tx--){

f_read(fsrc, buffer, (bmp.pic_w_l)*3, br);

for(ty=0;ty

r_data = *(ty*3 +2+buffer);

g_data = *(ty*3 +1+buffer);

b_data = *(ty*3 +0+buffer);

   if(tx

point.x = tx;

point.y = ty;

  point.r = r_data;

   point.g = g_data;

   point.b = b_data;

pixelDraw(point.y ,point.x,RGB888ToRGB565(point.r,point.g,point.b));//24位转换成TFT支持的16位并显示

   }

   }

    }

}

f_close(fsrc);

}

结语

本文提出了一种嵌入式图片浏览器的设计思路,以模块化的方法完成了设计过程,可方便地根据应用需求完善解码库的设计,使其能够在实际平台上良好地运行。本设计基本达到了预期效果,虽然不能作为一种通用图片浏览器的方案,但在需要用到图片解码器的GPS、手持PDA、远程监控系统设计上仍然具有一定的参考价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top