libjpeg-turbo-1.2.1编译和使用

一、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


你可能感兴趣的:(libjpeg)