若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/86155043

长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

Qt开发专栏:三方库开发技术

上一篇:没有了

下一篇:《Jpeglib开发笔记(二):JpegLib编译(ubutnu)和Demo》

前话

项目中抓取屏幕需要对HBITMAP图像,做同屏传输,需要进一步优化图像压缩率,减少数据传输量,使用到JpegLib库。

JpegLib介绍

JpegLib是一个用C编写的jpeg图像压缩免费库,许多应用程序对jepg的支持都依赖于该库。

JpegLib下载

下载地址:https://www.ijg.org/

点击对应文件即可下载,如下图:

QQ群:1047134658(点击“文件”搜索“jpeg”,群内与博文同步更新)

工程模板下载地址:

https://download.csdn.net/download/qq21497936/10906472

使用VS2017编译

步骤一:下载源码

先下载源码后解压到指定文件夹,如下图:

步骤二:使用vs2017命令行

在开始菜单中打开Vistual studio 2017名命行工具(开发应用是x86平台32位),进入源码文件夹,选下图:

步骤三:编译

执行源码文件夹下的makefile.vc

出现编译错误:

提示找不到win32.mak文件,在C盘搜索这个文件名,没有发现该文件,可以直接下一个

下载地址为:https://download.csdn.net/download/qq21497936/10905997

直接将该文件放到jpeg-9c的源码文件夹下,继续编译:

以上错误,经过摸索,解决方法是直接复制一份jconfig.vc,改变后缀变为jconfig.h,如下图:

继续编译,编译完成:

以上警告,可以忽略,已经生成了需要使用到的库,如下图:

模块化

Demo

步骤一:建立VC++空项目

使用vs2017建立VC空项目,如下图:

步骤二:将模块化代码考入Demo

、     

步骤三:引入库

将文件路径包含进入项目,将库路径包含进项目

引入头文件(注意C++引入C),加载lib库,配置中添加头文件包含目录,配置中添加库名称,配置中添加库路径,总结如下图:

步骤四:贴入代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>extern "C" {
#include "jpeglib.h"
}#pragma comment(lib, "libjpeg.lib")int main(int argc, char **argv)
{FILE *file;char fileName[256];int width;int height;struct jpeg_decompress_struct jDecompressStruct;struct jpeg_error_mgr jErrorMgr;memset(fileName, 0x00, sizeof(fileName));while (1){printf("please input jpeg file (input \'q\' to exit): ");scanf("%s", fileName);if (strcmp(fileName, "q") == 0){exit(0);}if ((file = fopen(fileName, "rb")) == 0) {fprintf(stderr, "can't open %s\n", fileName);continue;}// 初始化并申请解码器jDecompressStruct.err = jpeg_std_error(&jErrorMgr);jpeg_create_decompress(&jDecompressStruct);// 指定图片文件信息jpeg_stdio_src(&jDecompressStruct, file);// 读取头部信息jpeg_read_header(&jDecompressStruct, TRUE);// 开始解码jpeg_start_decompress(&jDecompressStruct);// 获取图片宽高width = jDecompressStruct.image_width;height = jDecompressStruct.image_height;printf("decompress file:%s, %d x %d\n", fileName, width, height);// 释放解码器对象jpeg_destroy_decompress(&jDecompressStruct);fclose(file);}return 0;
}

运行效果

(注意:输入的文件非jpg会在jpeglib库文件中直接使应用退出,此处jpeglib.lib提供处理方法,可避免)

上一篇:没有了

下一篇:《Jpeglib开发笔记(二):JpegLib编译(ubutnu)和Demo》

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/86155043

Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo相关推荐

  1. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  2. Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo

    若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子_长沙红胖子网络科技有限公司_CSDN博客 原博主博客导航:红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术.树莓派.三维.Op ...

  3. libzip开发笔记(一):libzip库介绍、编译和工程模板

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111876926 长期持续带来更多项目与技术分 ...

  4. xml开发笔记(一):tinyXml2库介绍、编译和工程模板

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111828450 长期持续带来更多项目与技术分 ...

  5. JNI开发笔记(七)--aar库的生成和调用

    aar库的生成和调用 引 前言 1. 新建一个空工程 2. 新建一个Module 3. 移植JNI工程到Module中 4. 生成aar库与so库 5. 在另一个工程中调用aar库 引 JNI开发笔记 ...

  6. Android开发笔记(七十)反编译初步

    查看平台源码 查看内核源码 Android的内核源码很大,有几个G,仔细找找网上有许多下载的地方.作为普通开发者,一般不需要阅读内核源码,但一点都不了解好像也不行,因为实际开发中有时候就得会那么一点点 ...

  7. Kinect开发笔记之二Kinect for Windows 2.0新特性

    这是本博客的第一篇翻译文档,笔者已经苦逼的竭尽全力的在翻译了,但无奈英语水平也是很有限,不对或者不妥当不准确的地方必然会有,还恳请大家留言或者邮件我以批评指正,我会虚心接受.谢谢大家.         ...

  8. Kinect开发笔记之一Kinect详细介绍

      毕业设计的课题我选择了结合Kinect和Unity3D开发体感游戏,这是我十分感兴趣的一个课题,所以做好当然责无旁贷.准备再写一系列Kinect的学习笔记,记录自己毕设一步一个脚印的历程.     ...

  9. python的gdal库说明_GDAL库学习笔记(一): GDAL库介绍

    可能你不玩GIS,不懂这个库到底有什么用,或者和python有什么关系.但是你要玩GIS,RS,你就应当知道这个库的价值.就算你不玩GIS,我想这个库对你也应该有致命的吸引力.为什么?看下面的介绍吧! ...

最新文章

  1. 走进SQL Server 2005:备份与恢复功能
  2. 使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决
  3. 8086汇编基础 push,pop指令执行时,sp怎么变
  4. C4C微信集成 - agent在C4C系统回复,微信用户在微信端直接收到
  5. layui登录页面写入数据_layui基本使用(动态获取数据,并把需要的数据传到新打开的窗口)...
  6. MySQL下bin-log的三种模式(ROW、Statement、Mixed)
  7. 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
  8. WebAPI基本封装
  9. java 密码连接mongo_mongodb启用密码认证连接
  10. fatal io error 11错误
  11. Visual C++ 6.0的三个问题---尚未完成安装 MSDEV.EXE 应用程序错误 缺少动态链接库文件
  12. Git超详解八 git工作流
  13. 使用 com.Lowagie.itext 导出html的内容到word
  14. 【转】IE内嵌google chrome frame解决浏览器兼容问题
  15. Mac_苹果电脑设置眼睛保护色
  16. PPT文件太大怎么办?如何压缩PPT?这几招帮你搞定
  17. Codeforces Round #739 (Div. 3) E. Polycarp and String Transformation
  18. python十六进制去掉0x_如何将一个整数转换为十六进制而在Python中没有多余的'0x'前导和'L'尾随字符?...
  19. Monkey常见面试问题
  20. 基于opencv的SVM车牌号码识别模型训练(C++)QT

热门文章

  1. 数据库的数据存储文件
  2. 码率控制、VBR、CBR
  3. IDEA生成jar工具包
  4. android系统怎么取消,安卓系统hd怎么关闭
  5. 工业物联网解决方案:PLC数据上云
  6. python界面编程
  7. ubuntu换阿里源
  8. 【服务器数据恢复】Storwize系列存储raid5数据恢复案例
  9. 电流镜自动布局 布局对称性: 量化和应用以消除非线性过程梯度
  10. 中国大公司罹患“大企业病” 国企成亏损重灾区