原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/86155043
Jpeglib开发笔记(一):JpegLib库介绍、编译、Demo和工程模板
前话
项目中抓取屏幕需要对HBITMAP图像,做同屏传输,需要进一步优化图像压缩率,减少数据传输量,使用到JpegLib库。
JpegLib介绍
JpegLib是一个用C编写的jpeg图像压缩免费库,许多应用程序对jepg的支持都依赖于该库。
JpegLib下载
下载地址:https://www.ijg.org/
点击对应文件即可下载,如下图:
工程模板下载地址:
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提供处理方法,可避免)
工程模板下载地址
https://download.csdn.net/download/qq21497936/10906472
后话
将会继续研究jpeg压缩,敬请期待!!!
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/86155043