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数据的实现方法后面会再写一篇文章详细描述,一旦完成则放上链接。

解码内存中JPEG数据的实现方法文章地址

时间: 2024-10-01 03:11:46

VS2013编译libjpeg库的相关文章

【转】VS2013编译libjpeg库

原文地址:http://blog.csdn.net/weixinhum/article/details/42718959 现在,很多图像处理工具和开源库都给出了图像解码的函数接口,然而有时这些接口并不能完全满足我们的需求,比如如果我们想直接去解码内存中的JPEG数据就没有这样的接口. 由于之前做的项目刚刚好设备传过来的图像数据就是JPEG格式的,如果将每帧图像数据都保存成文件然后再借助开源库提供的接口去读入文件会显得很掉价,所以做了一些直接解码内存中JPEG数据的研究.经过对比发现libjpeg

linux+vs2013编译静态库和动态库

Linux下创建与使用静态库 Linux静态库命名规则 Linux静态库命名规范,必须是"lib[your_library_name].a":lib为前缀,中间是静态库名,扩展名为.a. 创建静态库(.a) (1) 将代码文件编译成目标文件.o(test.o) 命令:g++ -c  test.cpp (2) 通过ar工具将目标文件打包成.a静态库文件 命令:ar -crv libtest.a test.o 生成静态库test.a 使用静态库 Linux下使用静态库,只需要在编译的时候,

利用libjpeg库解码内存中的jpeg数据

在"VS2013编译libjpeg库"这篇文章中本人介绍了如何在VS中编译libjpeg库并提供了一个应用的范例,而这篇文章将在此基础上,介绍如何用libjpeg库来解码内存中的jpeg数据. 其实这个需求已经不新鲜了,网上也能找到别人提供的一些解决方法,之所以要再次写不过是因为本人觉得那些方法或多或少都有些不对的地方,或者说因为版本的迭代,本来是对的,现在有点问题.当然,本人并没有很费心思的自己去一行一行的看源代码,实现的过程基本是参考这篇文章来做的,所以这里只是提供怎么改,而为什么

vs2013 + python3.52 + boost1.61, 编译C++库失败

使用vs2013  + python3.52 + boost1.61,  编译C++库,  失败!  提示如下": boost::python::detail::init_module(struct PyModuleDef &,void (__cdecl*)(void))" ([email protected]@[email protected]@@[email protected]@[email protected]@[email protected]),该符号在函数 PyI

VS2013编译boost1.55库

1. 官网下载最新的Boost库,我的是1.55 2. 在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\detail\has_member_function_callable_with.hpp line:222 template<class U> static BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLAB

VS2013编译Qt5.4静态库

设置了一天,这静态编译也总算是虐出来了...Qt 的静态编译简直不要太麻烦啊... 感谢这位大神提供的方法 http://zerooverture.com/tutorials/qt/737.html 工具下载: http://pan.baidu.com/s/1hq2Cff2 一.环境配置 我目前用的系统是Windows 7 64bit,请注意安装好以下软件,以及配置好环境变量: Visual Studio 2013 python perl 安装好以上软件 请用cmd测试下 python和perl

Android压缩图片和libjpeg库

前言 Fjpeg使用 Fjpeg 注意 如何使用 如何压缩图片只改变在硬盘的存储大小 如何改变图片分辨率让其Bitmap对象可以加载到内存中 关于重载版本 开始学习之旅 补充知识的结论 修改图片分辨率 防止在Android加载Bitmap的时候oom内存溢出 解决方案1 解决方案2 希望压缩图片方便网络传输 第一种方案利用Bitmapcompress方法压缩 第二种利用libjpeg压缩 在Android50测试两个 图片压缩 在Android60测试两个 图片压缩 解释Android50和60

libjpeg库解码jpeg图像输出数据排列问题

上一篇文章我们谈到如何修改libjpeg库来解码内存中的jpeg数据这件事情,也确实做到了这一点,然而紧随其后的就发现了一个很蛋疼的问题.因为libjpeg库输出的图像像素是以r-g-b这样的顺序排列的,而在Windows平台上要去显示内存中的图像数据通常是在内存中创建一个位图对象bitmap,然后将要显示的图像数据拷到其相应的位置中,拷贝完成后显示图像.蛋疼的地方就在于bitmap的像素是以b-g-r这样的顺序排列的,这就要求我们在拷贝数据的时候要逐个像素点进行修改,这样做浪费的时间是跟图像的

VS2013 编译&amp;使用 stlport

1. 下载stlport.   下载地址:http://sourceforge.net/projects/stlport/ 2. 解压到一个目录下面, 我的是解压到D:\project_kuku\program\library\STLport-5.2.1 3. 打开vs2013的命令行工具, 在目录:C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts\ 下面,   <VS2013 x86 本机工具命令提示>