Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo
若该文为原创文章,转载请注明原文出处
本文章博客地址: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相关推荐
- STM32 HAL库学习笔记2 HAL库介绍
STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...
- Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo
若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子_长沙红胖子网络科技有限公司_CSDN博客 原博主博客导航:红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术.树莓派.三维.Op ...
- libzip开发笔记(一):libzip库介绍、编译和工程模板
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111876926 长期持续带来更多项目与技术分 ...
- xml开发笔记(一):tinyXml2库介绍、编译和工程模板
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111828450 长期持续带来更多项目与技术分 ...
- JNI开发笔记(七)--aar库的生成和调用
aar库的生成和调用 引 前言 1. 新建一个空工程 2. 新建一个Module 3. 移植JNI工程到Module中 4. 生成aar库与so库 5. 在另一个工程中调用aar库 引 JNI开发笔记 ...
- Android开发笔记(七十)反编译初步
查看平台源码 查看内核源码 Android的内核源码很大,有几个G,仔细找找网上有许多下载的地方.作为普通开发者,一般不需要阅读内核源码,但一点都不了解好像也不行,因为实际开发中有时候就得会那么一点点 ...
- Kinect开发笔记之二Kinect for Windows 2.0新特性
这是本博客的第一篇翻译文档,笔者已经苦逼的竭尽全力的在翻译了,但无奈英语水平也是很有限,不对或者不妥当不准确的地方必然会有,还恳请大家留言或者邮件我以批评指正,我会虚心接受.谢谢大家. ...
- Kinect开发笔记之一Kinect详细介绍
毕业设计的课题我选择了结合Kinect和Unity3D开发体感游戏,这是我十分感兴趣的一个课题,所以做好当然责无旁贷.准备再写一系列Kinect的学习笔记,记录自己毕设一步一个脚印的历程. ...
- python的gdal库说明_GDAL库学习笔记(一): GDAL库介绍
可能你不玩GIS,不懂这个库到底有什么用,或者和python有什么关系.但是你要玩GIS,RS,你就应当知道这个库的价值.就算你不玩GIS,我想这个库对你也应该有致命的吸引力.为什么?看下面的介绍吧! ...
最新文章
- 走进SQL Server 2005:备份与恢复功能
- 使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决
- 8086汇编基础 push,pop指令执行时,sp怎么变
- C4C微信集成 - agent在C4C系统回复,微信用户在微信端直接收到
- layui登录页面写入数据_layui基本使用(动态获取数据,并把需要的数据传到新打开的窗口)...
- MySQL下bin-log的三种模式(ROW、Statement、Mixed)
- 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
- WebAPI基本封装
- java 密码连接mongo_mongodb启用密码认证连接
- fatal io error 11错误
- Visual C++ 6.0的三个问题---尚未完成安装 MSDEV.EXE 应用程序错误 缺少动态链接库文件
- Git超详解八 git工作流
- 使用 com.Lowagie.itext 导出html的内容到word
- 【转】IE内嵌google chrome frame解决浏览器兼容问题
- Mac_苹果电脑设置眼睛保护色
- PPT文件太大怎么办?如何压缩PPT?这几招帮你搞定
- Codeforces Round #739 (Div. 3) E. Polycarp and String Transformation
- python十六进制去掉0x_如何将一个整数转换为十六进制而在Python中没有多余的'0x'前导和'L'尾随字符?...
- Monkey常见面试问题
- 基于opencv的SVM车牌号码识别模型训练(C++)QT