一。 图片显示概述
1. 常见图片的格式
二。实验程序讲解
注:由于解码程序的问题,不是所有的 JPEG、JPG 图片都能打开,如果不能打开,则用 XP 自带的画图工具保存一下,再放到 PICTURE 文件夹下就可以打开了。
bmp.c 和 bmp.h 用于实现对 bmp 文件的解码; tjpgd.c 和 tjpgd.h 用于实现对 jpeg/jpg文件的解码; gif.c 和 gif.h 用于实现对 gif 文件的解码。
piclib.c文件提供了用于解码图片的函数的入口,根据不同的图片文件,调用相应的解码程序。
//智能画图
//FileName:要显示的图片文件 BMP/JPG/JPEG/GIF
//x,y,width,height:坐标及显示区域尺寸
//acolor :alphablend的颜色(仅对不大于320*240的32位bmp有效!)
//abdnum :alphablend的值(0~32有效,其余值表示不使用alphablend,仅对不大于320*240的32位bmp有效!)
//图片在开始和结束的坐标点范围内显示
u8 ai_load_picfile(const u8 *filename,u16 x,u16 y,u16 width,u16 height)
{
u8 res;//返回值
u8 temp;
if((x+width)>lcddev.width)return PIC_WINDOW_ERR; //x坐标超范围了.
if((y+height)>lcddev.height)return PIC_WINDOW_ERR; //y坐标超范围了.
//得到显示方框大小
if(width==0||height==0)return PIC_WINDOW_ERR; //窗口设定错误
picinfo.S_Height=height;
picinfo.S_Width=width;
//显示区域无效
if(picinfo.S_Height==0||picinfo.S_Width==0)
{
picinfo.S_Height=lcddev.height;
picinfo.S_Width=lcddev.width;
return FALSE;
}
//显示的开始坐标点
picinfo.S_YOFF=y;
picinfo.S_XOFF=x;
//文件名传递
temp=f_typetell((u8*)filename); //得到文件的类型
switch(temp)
{
case T_BMP:
res=stdbmp_decode(filename); //解码bmp
break;
case T_JPG:
case T_JPEG:
res=jpg_decode(filename); //解码JPG/JPEG
break;
case T_GIF:
res=gif_decode(filename,x,y,width,height); //解码gif
break;
default:
res=PIC_FORMAT_ERR; //非图片格式!!!
break;
}
return res;
}
上一篇:31. FATFS文件系统的基本知识
下一篇:33. 外部SRAM实验
推荐阅读最新更新时间:2024-03-16 15:44