现在,很多图像处理工具和开源库都给出了图像解码的函数接口,然而有时这些接口并不能完全满足我们的需求,比如如果我们想直接去解码内存中的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.csdn.net/weixinhum/article/details/43089047

VS2013编译libjpeg库相关推荐

  1. Windows编译libjpeg库

    Qt君最近在做图像相关的项目,用到了libjpeg库.记录libjpeg编译步骤供大家参考. 1.下载源码(jpegsrc9c.zip) 官网地址: http://www.ijg.org/ jepgs ...

  2. 在Windows下使用vs2019编译libjpeg库

    一.库的编译 1.下载 libjpeg 源码,这里我下载的是 jpegsr9e.zip 2.解压源码 3.进入解压后的目录,找到 makefile.vs 文件,用文本编辑器打开并编辑,找到 语句 #! ...

  3. VS2015编译libjpeg库

    参考资料: 1.http://blog.csdn.net/joeblackzqq/article/details/42264143 2.http://www.cnblogs.com/summerRQ/ ...

  4. win10环境下VTK7.1的编译和Qt调用VTK的详细教程二(VS2013编译支持Qt的VTK库)

    本文主要用于编译支持Qt的VTK库,重点在于编译VTK库,供Qt调用. 第1步:新建一个文件夹:vtkDir 第2步:在该文件夹下新建两个文件夹vtk_bin.vtk_src 第3步:将下载好的VTK ...

  5. Android直播开发之旅(15):libjpeg库的编译移植与使用

    1. libjpeg介绍  libJPEG库是一款功能强大的JPEG图像处理开源库,它支持将图像数据压缩编码为JPEG格式和对原有的JPEG图像解压缩,Android系统底层处理图片压缩就是用得lib ...

  6. 性能优化 (四) ubuntu 完美编译 libjpeg 图像压缩库,媲美微信图片压缩算法

    使用方式 在 project/build.gradle 上添加以下代码 allprojects {repositories {...maven { url 'https://jitpack.io' } ...

  7. Dlib简介及在windows7 vs2013编译过程

    Dlib是一个C++库,包含了许多机器学习算法.它是跨平台的,可以应用在Windows.Linux.Mac.embedded devices.mobile phones等.它的License是Boos ...

  8. LIVE555简介及在Windows上通过VS2013编译操作步骤

    LIVE555是使用开放标准协议(RTP/RTCP, RTSP, SIP)形成的一组用于多媒体流C++库.这些库支持的平台包括Unix(包括Linux和Mac OS X).Windows和QNX(以及 ...

  9. 在Windows7/10上通过VS2013编译FFmpeg 4.1.3源码操作步骤

    多年前在https://blog.csdn.net/fengbingchun/article/details/40951403 中对FFmpeg在windows下的编译过程做过说明,那时FFmpeg版 ...

最新文章

  1. 无人驾驶中的 3D 目标检测技术
  2. awk的集合操作实现
  3. FPGA优化之高扇出
  4. 2017-2018-1 20155338 《信息安全系统设计基础》 第三周学习总结
  5. valorant皮肤怎么获得_王者荣耀狂铁特工战影上线时间 狂铁新皮肤特工战影怎么获得...
  6. 程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?
  7. 转载-zookeeper在kafka中的作用
  8. 同时面了腾讯三个部门,拿下offer!
  9. 记录一次空指针异常(NullPointerException)的断点调试
  10. 系列文章--WF学习资料汇总
  11. Charm Bracelet(题目地址链接:https://acs.jxnu.edu.cn/problem/NOIOPJCH02067113)
  12. 用计算机表白的数字,数字表白密码 表白密码大全
  13. 牛津高阶字典ld2_奶爸1.6G Mdict词库的补充及在Bluedict中使用的心得
  14. 冰河竟然被腾讯邀请去做技术分享了,这是要起飞的节奏吗?
  15. Spring-01-HelloWorld
  16. 计算机管理员密码忘记了怎么恢复,新版tplink(tplogin.cn)管理员密码忘记了怎么办?...
  17. 清十二帝疑案(阎崇年)37集全集 百家讲坛 DVD高清晰版
  18. 男朋友的内裤旧了不要扔,关键时刻有大用......
  19. Windows 7 小工具
  20. 哪款计算机可以玩游戏,哪个云电脑配置较高?能用来玩游戏?

热门文章

  1. Windows 怎么查看是否已经真正激活
  2. CMMI5认证的难度和认证要求
  3. 群晖NAS搭建WebDav服务,并内网穿透实现公网访问
  4. 配置Hive在mysql上的元数据库时Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
  5. stegsolve 的安装使用
  6. InetAddress.getByName背后发生了什么
  7. 数据提取方法-数据提取的概念和数据的分类
  8. 瑞士轮 pascal
  9. 求两个数之间的素数和
  10. 华师大 OJ 3024