VS2013编译libjpeg库

 现在,很多图像处理工具和开源库都给出了图像解码的函数接口,然而有时这些接口并不能完全满足我们的需求,比如如果我们想直接去解码内存中的JPEG数据就没有这样的接口。

    由于之前做的项目刚刚好设备传过来的图像数据就是JPEG格式的,如果将每帧图像数据都保存成文件然后再借助开源库提供的接口去读入文件会显得很掉价,所以做了一些直接解码内存中JPEG数据的研究。经过对比发现libjpeg库对JPEG图像的编解码支持甚好,而且相对于OpenCV库,复杂度小很多,是故就决定动手来实现我自己想要的接口。

    所谓“巧妇难为无米之炊”,要用libjpeg库,第一步自然是去下载其源码,下载地址在这里

    下载完解解压后,就要去编译libjpeg库了,这里我主要参考的是这篇文章这篇文章。因为第一篇用的是VS2012,有些路径跟本文设置略有差别,所以如果你用的是VS2012,请毫不犹豫的点开链接,跟着他的步骤做吧。当然还是要说,VS2013实在是好用太多。

    OK,现在开始做编译的准备工作,其实也就两步:

    第一步:找到刚刚解压出来的“jpeg-9a”文件夹下面的“makefile.vc”文件,用记事本或Notepad++等编辑工具打开,然后找到里面的!include <win32.mak>,将“win32.mak”改为绝对路径。不难看出这个win32.mak是个文件,其是VS下的一个文件,所以路径就跟你自己装的VS版本有关,本人装的是VS2013版本,默认情况下该版本中这个文件在“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include”这个目录下。因而我们将刚刚搜索到的那句话改为!include <C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\win32.mak>就OK了。

    第二步:打开VS2013的命令行:VS2013 x86 本机工具命令提示”,这个用开始菜单打开会方便点,直接找到“Visual Studio 2013”这一项,打开里面的“Visual Studio Tools”文件夹就可以看到。如果是Win8的用户则建议去装个开始菜单工具,不然就去VS的安装目录下面找。打开命令行之后CD到解压出来的“jpeg-9a目录下,输入“nmake /f makefile.vc setup-v10”,回车,待命令行执行完命令后,准备工作就大功告成啦。关于命令行的操作,具体如下图:

    下面来做编译,其实已经没什么难点了,上面工作做完之后,jpeg-9a”文件夹下面会生成一个VS的工程。直接运行里面的“jpeg.sln”,然后VS提示要升级编译器什么的点是,进入编程界面后直接编译就大功告成了。编译完成后在“jpeg-9a”文件夹下的“Release”文件夹中可以看到一个“jpeg.lib”文件,这个就是我们刚刚编译出来的静态链接库。

 要使用这个静态链接库,只要先包含进jconfig.h,jmorecfg.h,jpeglib.h这三个头文件,然后把刚刚编译出来的jpeg.lib加进工程中就可以了。习惯上会把jpeg.lib改名为libjpeg.lib。下面提供一个jpeg转bmp的例子,代码是基本照搬这篇文章的,只是做了少量修改。

 工程下载地址

 关于解码内存中JPEG数据的实现方法介绍,文章地址如下:http://blog.youkuaiyun.com/weixinhum/article/details/43089047

### 编译安装libjpeg #### 准备工作 为了成功编译并安装`libjpeg`,在Linux环境中需确保已安装必要的构建工具和依赖项。通常这些可以通过包管理器来完成。 对于基于Debian的发行版,如Ubuntu,可以执行如下命令更新软件源列表并安装所需的基础工具[^1]: ```bash sudo apt-get update && sudo apt-get install build-essential ``` #### 下载libjpeg源码 获取官方发布的稳定版本源代码是首要步骤之一。可以从官方网站下载最新版本或者通过Git克隆仓获得最新的开发分支。这里以特定版本为例说明操作过程: 假设要使用的是`v9c`标签对应的发布版,则可采用wget直接拉取tarball文件: ```bash wget https://github.com/LibJpeg-turbo/libjpeg-turbo/archive/refs/tags/2.1.4.tar.gz -2.1.4.tar.gz cd libjpeg-turbo-2.1.4/ ``` #### 配置编译选项 进入解压后的目录后,运行配置脚本来设置编译参数。如果目标平台为本地主机而非交叉编译环境的话,这一步相对简单得多。例如: ```bash ./configure --prefix=/usr/local/jpeg-9c ``` 上述指令指定了安装路径为`/usr/local/jpeg-9c`,可以根据实际情况调整该位置[^2]。 #### 执行编译流程 一旦完成了前面提到的各项准备工作之后就可以正式开始编译了。一般情况下只需一条简单的make命令即可启动整个编译链路: ```bash make -j$(nproc) ``` 这里的`-j$(nproc)`表示利用多线程加速编译速度,括号内的表达式会自动计算当前系统的CPU核心数从而最大化并发度[^3]。 #### 测试与安装 编译完成后建议先进行自我检测以验证生成的目标二进制文件是否正常运作。接着再决定是否真正部署到系统当中去。 ```bash make test # 可选:仅当项目自带测试套件时有效 sudo make install ``` 以上就是在Linux平台上针对`libjpeg`的一般性编译指南。具体细节可能会因不同版本而有所差异,请参照各自README文档获取最权威的信息指引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值