×
单片机 > 单片机程序设计 > 详情

36. 图片显示实验

发布时间:2020-06-19 发布时间:
|

一。 图片显示概述

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;

}


关键字:图片显示  stm32

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR单片机语音识别电路模块设计