《电子相框》--2.fb设备与图片显示

接着上一篇博客的总结,继续项目的技术点展示。

一、fb设备显示图片基础的步骤:

1.确定打开的设备,一般设备在/dev/fbxx;

2.两个与显示有关的结构体变量:struct fb_fix_screeninfo finfo  struct fb_var_screeninfo vinfo;

3.打开设备,获取设备的硬件信息,包括屏幕的长宽,开始显像的坐标位置;

4.确定屏幕所容纳的图片信息长度:长*宽*照片的位数/8,然后利用mmap函数,结合打开的设备号与长度进行内存地址的映射,返回freebuff内存地址的首地址;

5.使用横纵双层循环,利用指针的偏移,将我们的图片信息都放入freebuff内存地址中,然后图片就会得到显示;(图片的正反显示:从fb的首地址开始赋值与从末尾倒至赋值)。

 

二、bmp,jpg,png图片的显示

1.图片格式的检测,打开图片文件,获取图片的头信息,然后通过头信息判断图片的格式,例如bmp图片:BM开头,  jpg图片开头:oxff 0xd8   而png则是调用了一个libpng库中封装好的  png_sig_cmp函数来实现图片格式的判断;

2.借助图片库的例程,解析我们要打开的图片的信息,定义一个全局的数组变量,用来储存像素数据信息,将图片信息全部放到这个数组中。

3.调用图片的显示函数,进行图片的显示。其中由于需要输入的图片数据过多,封装了一个图片信息的结构体,包括图片的的名字,分辨率,bpp,以及一个指向freebuff的指针,在显示函数中仅仅输入图片的名字,然后在函数内定义结构体并进行赋值,然后调用图片格式判断函数,和图片信息储存函数,最后利用单个图片显示的函数将图片进行展示。

 

三、图片数据的管理与检索:

1.利用opendir和readdir函数,递归索引指定文件内的所有图片;

2.定义了一个结构体用来存放图片的信息,包括图片文件的路径+名字,图片文件的格式,在定义一个全局的此类型的结构体数组用来存放我们规定比对之后预期格式的图片信息,然后通过switch的方式选择图片的显示函数进而展示图片;

3.进入死循环,规定屏幕的翻页区域,等待触摸进而调用显示函数进行图片的展示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值