在进行图片压缩编程之前必须先移植第三方库libjpeg.so。
我用的是jpegsrc.v8c.tar.gz版本,具体的安装过程如下:
1、解压:#tar -xzvf jpegsrc.v8d.tar.gz
2、进入解压后的目录:#cd jpeg-8c
3、创建文件夹,用于存放生成的库文件和相关头文件:#mkdir /root/jpeg_8
4、配置编译工具和生成目标文件该存放的文件夹:#./configure --prefix=/root/jpeg_8 --host=arm-cortex_a8-linux-gnueabi
“/root/jpeg_8”这个文件夹根据自己需要设置,编译工具也要根据需要设置:arm-cortex_a8-linux-gnueabi
libjpeg库生成了就可以开始图片压缩的编程了,如下:
1、图片的压缩需要一个jpeg对象,jpeg对象是一个jpeg_decompress_struct结构体,同时还需要一个错误处理结构体对象,该对象是jpeg_error_mgr。
struct jpeg_compress_struct toWriteCinfo; //定义jpeg对象
struct jpeg_error_mgr jerr; //定义错误处理对象
2、将错误处理对象绑定在jpeg对象上
toWriteCinfo.err = jpeg_std_error(&jerr);
3、初始化jpeg对象
jpeg_create_compress(&toWriteCinfo);
4、确定要用于输出压缩后的jpeg的数据空间,这里用unsigned char **jpeg_buf类型的指针,unsigned long int *jpeg_len指针指向的空间用于存储jpeg图片的大小
jpeg_mem_dest(&toWriteCinfo, jpeg_buf, jpeg_len);
5、设置压缩参数,主要参数有图像宽、高、色彩通道数(1:索引图像 3:其他),色彩空间(JCS_GRAYSCALE表示灰度图,