一、libjpeg-turbo-1.2.1
libjpeg 是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。libjpeg-turbo 是一个专门为 x86 和 x86-64 处理器优化的高速 libjpeg 的改进版本。
二、JPEG解码
2.1分配和初始化一个JPEG decompression结构体
struct jpeg_decompress_struct cinfo;
jpeg_create_decompress(&cinfo);
2.2指定待解压的源文件
infile = fopen(argv[1], "rb");
jpeg_stdio_src(&cinfo, infile);
2.3使用jpeg_read_header获得jpg信息
jpeg_read_header(&cinfo, TRUE);
cinfo.image_width//jpg图片的宽度
cinfo.image_height//jpg图片的高度
cinfo.num_components//每个图片的像素值由几部分组成,如rgb就是3部分
2.4设置解压参数
cinfo.scale_num//scale_num/scale_denom为图像相对于原图的缩放比例
cinfo.scale_denom
2.5启动解压
jpeg_start_decompress(&cinfo);//启动jpg解压
2.6 循环调用jpeg_read_scanlines
row_stride = cinfo.output_width * cinfo.output_components;//解压后图像的一行的字节长度
buffer = malloc(row_stride);
jpeg_read_scanlines(&cinfo, &buffer, 1);//读取图片的一行到buffer中去
2.7释放获取的资源
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
三、编译libjpeg源码
#tar xzf libjpeg-turbo-1.2.1.tar.gz
#cd libjpeg-turbo-1.2.1
#./configure --prefix=/usr/local/libjpeg --host=arm-linux(--prefix为用户自定义的目录)
#make
#make install
将/usr/local/libjpeg/lib目录下的.so文件拷贝到开发板的lib目录下
arm-linux-gcc -o jpg2rgb jpg2rgb.c -I /usr/local/libjpeg/include -L /usr/local/libjpeg/lib
-ljpeg
将jpg2rgb拷贝到开打板上就可以运行该程序了
四、示例程序
所有示例程序都有详细注解,并且可以在开发板上运行http://pan.baidu.com/share/link?shareid=336261&uk=101680913