赞
踩
一、开发环境介绍
开发板:友善之臂Tiny4412
LCD型号:S702 、分辨率: 800*480
Linux内核版本:Linux 3.5
交叉编译器:arm-linux-gcc 4.5.1
二、GIF文件格式简单介绍
生活中常用图片格式有BMP、PNG、JPG、GIF等。BMP图片的显示很简单,可以直接从图片文件里读取RGB数据进行显示.。PNG格式图片显示,直接调用libpng库里的接口函数解码显示;JPG格式图片也一样,调用libjpeg库的接口函数完成解码即可得到原始RGB数据完成显示;如果要在LCD屏上显示GIF图片,那么也是调用giflib库的接口函数完成解码显示。
在解码jpeg图片和png图片的时候我们不需要对jpeg和png文件格式有了解就可以解码了(了解jpeg和png当然更好),但是在使用giflib解码gif的时候,我们必须要对gif文件有很简单的了解。
gif文件中可以存放一帧或者多帧图像数据,并且可以存放图像控制信息,因此可以存储动画图片,gif文件由文件头开头,文件尾结尾,中间是一些连续的数据块(block)。这些数据块又分为图像数据块和扩展数据块(extension),图像数据块可以理解成存放一帧的图像数据。扩展数据块存放的是一些辅助信息,比如指示怎样显示图像数据等等。
gif文件中的图像基于调色板的,因此一张gif文件中的图像最多只能有255中颜色,因此gif文件只能存储比较简单的图像。gif文件中有两种调色板 ——全局调色板和图像局部调色板。当一帧图像有局部调色板时,则以局部调色板来解码该帧图像,如果该帧图像没有局部调色板则用全局调色板来解码该图像。
更详细的信息可以查阅giflib的文档中的gif89.txt文件,或者在网络搜索相关的信息。
三、移植giflib库到嵌入式Linux平台
编译过程:
[wbyq@wbyq work]$ tar xvf /mnt/hgfs/linux-share-dir/giflib-5.2.1.tar.gz
[wbyq@wbyq work]$ cd giflib-5.2.1/
[wbyq@wbyq giflib-5.2.1]$ make CC=arm-linux-gcc
[wbyq@wbyq giflib-5.2.1]$ make PREFIX=$PWD/_install install
[wbyq@wbyq giflib-5.2.1]$ tree _install/
_install/
├── bin
│ ├── gif2rgb
│ ├── gifbuild
│ ├── gifclrmp
│ ├── giffix
│ ├── giftext
│ └── giftool
├── include
│ └── gif_lib.h
├── lib
│ ├── libgif.a
│ ├── libgif.so -> libgif.so.7
│ ├── libgif.so.7 -> libgif.so.7.2.0
│ └── libgif.so.7.2.0
└── share
└── man
└── man1
├── gif2rgb.1
├── gifbg.1
├── gifbuild.1
├── gifclrmp.1
├── gifcolor.1
├── gifecho.1
├── giffix.1
├── gifhisto.1
├── gifinto.1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。