libjpeg源码库使用编程实验

//--------------------------------------------------------------

// libjpeg源码库的使用说明// 

// readme @yeven-2010.10.7

//-------------------------------------------------------------

这些天跟视频打交道,所以需要进行图片的编程,由于jpeg的广泛感使用和优越性能,jpeg压缩便成为我实验的目标。

使用源码是IJG JPEG Library,下载地址:http://www.ijg.org/

推荐使用v6版本,我使用的是v8板

实验环境:ubuntu10.04

我的工程下载地址:http://ishare.iask.sina.com.cn/f/11437846.html


1、环境搭建

  (1)、到www.ijg.org网站下载libjpeg的源码,我使用的是v8版本。解压到/home/yixiaoyang/桌面/jpeg/jpeg-8b-linux 

  (2)、配置

  libjpeg:./configure --enable-shared --prefix=/home/yixiaoyang/桌面/jpeg/jpeg-8b-linux/shlib

  configure需要加上ennable shared配置生成共享库。

  因为ubuntu自带的是v6版本,所以为了避免覆盖原油版本引起系统问题prefix指定自己的share lib目录

  configure后将生成Makefile文件,检查这个文件,看prefix修改过来没有,如果没有,手动修改一下

  (3)、编译安装

  make &&make install

  可以看到,在你指定prefic文件夹下的多了一些文件。这些就是我们应用程序要用的库和一些实现文件。

3、使用

  新建工程文件夹,把lib整个目录拷贝进去,我们将用到其中的libjpeg.lib,jconfig.h,jmorecfg.h,jpeglib.h这几个文件,也考拷贝进去。

  编写应用文件mtest.c,主函数在这里面。

  关于具体的interface使用请参考源码中的example.c和这篇文章:http://www.vckbase.com/document/viewdoc/?id=1790

  我的目录:

3、编译、运行

  额,先把我的makefile贴出来

test:jconfig.h jmorecfg.h jpeglib.h mtest.c
gcc
-pg -o test mtest.c jpeglib.h jconfig.h jmorecfg.h -ljpeg -L /home/yixiaoyang/桌面/yeven-jpeg/lib

  一定注意“-ljpeg -L /home/yixiaoyang/桌面/yeven-jpeg/lib”链接库的选项,指定到自己的库,否则ld的时候会出错。

4、其他

  由于不同及其的更新成都不一样,可能有libjpeg库运行时错误的现象。自己google吧,大多是/usr/lib中的共享库版本不一致引起的,所以推荐使用v6版本。

  编写应用程序的是有也会有各种不同的错误,需要简单的修改一下源码。其中大多是定义无法定位引起的。随机应变吧。

更多信息参考:http://www.jpegcameras.com/libjpeg/libjpeg.html

压缩解压效果.

原图:

重复压缩解压后的图:

大小为原来的1/4左右,差别不大,但这个数据不是压缩倍率,注意了。

原文地址:https://www.cnblogs.com/yixiaoyang/p/1871152.html