开发包的话直接在网上可以下载,里面包含了头文件 静态库以及动态库!

下面说一下压缩编码基本的调用流程

/*图像数据格式:*标准输入图像格式是像素的矩形阵列*每个像素具有相同数量的“分量”值(颜色通道)。*每个像素行是一组JSAMPLE(通常是unsigned chars)。*如果您正在使用颜色数据,则每个像素的颜色值*必须在行中相邻; 例如,用于24位的R,G,B,R,G,B,R,G,B,... RGB颜色。**对于这个例子,我们假设这个数据结构与之匹配*我们的应用程序将图像存储在内存中,所以我们可以传递一个指向我们的图像缓冲区。*//*JPEG压缩的示例程序。*我们假设目标文件名 分辨率和压缩因子被传入*/
#include“jpeglib.h”
#include <setjmp.h>void write_JPEG_file (char *filename,int image_width,int image_height, int quality,JSAMPLE *image_buffer)
{/* 此结构体包含JPEG压缩参数和指针工作空间(由JPEG库根据需要分配)* 可以有多个这样的结构,代表多个压缩/解压缩过程,一次存在。* 我们参考作为“JPEG对象”的任何一个结构(及其关联的工作数据)*/struct jpeg_compress_struct cinfo;/* 此结构体表示JPEG错误处理程序* 它是单独声明的,因为应用程序经常要提供一个专门的错误处理程序* 采取简单的方法,并使用标准的错误处理程序*/struct jpeg_error_mgr jerr;FILE *outfile;                /* 目标文件 */JSAMPROW row_pointer[1];      /* 指向JSAMPLE的每一行的地址*/int row_stride;               /* 图像缓冲区中的物理行宽度 *//* 步骤1:分配和初始化JPEG压缩对象* //* 我们必须首先设置错误处理程序,以防初始化失败*/cinfo.err = jpeg_std_error(&jerr);/* 现在我们可以初始化JPEG压缩对象。*/jpeg_create_compress(&cinfo);/* 步骤2:指定数据目的地(例如,文件)*//* 注意:步骤2和3可以按任一顺序完成。*//* 这里我们使用库提供的代码将压缩数据发送到 stdio流。* 你也可以编写自己的代码来做别的事情。* 使用“b”选项来fopen()需要它来编写二进制文件。*/if ((outfile = fopen(filename, "wb")) == NULL) {fprintf(stderr, "can't open %s\n", filename);exit(1);}jpeg_stdio_dest(&cinfo, outfile);/* 步骤3:设置压缩参数* //* 首先我们提供输入图像的描述。* cinfo结构的四个字段必须填写:*/cinfo.image_width = image_width;       /* 图像宽度和高度,以像素为单位*/cinfo.image_height = image_height;cinfo.input_components = 3;            /* 每像素的颜色分量*/cinfo.in_color_space = JCS_RGB;        /* 输入图像的颜色空间* //* 现在使用库的例程设置默认压缩参数。*(您必须至少设置cinfo.in_color_space才能调用这个,由于默认值取决于源颜色空间。)*/jpeg_set_defaults(&cinfo);/* 现在您可以设置任何您想要的非默认参数。* 这里我们只是说明使用质量(量化表)缩放:*/jpeg_set_quality(&cinfo, quality, TRUE /*limit to baseline-JPEG values */);/* 步骤4:启动压缩*//* TRUE确保我们将编写一个完整的交换JPEG文件。* 通过TRUE,除非你非常确定你在做什么。*/jpeg_start_compress(&cinfo, TRUE);/* 步骤5:while(扫描 等待写入的每行)*//* jpeg_write_scanlines(...); *//*这里我们使用库的状态变量cinfo.next_scanline作为循环计数器*/row_stride = image_width * 3; /* 在image_buffer中每行的JSAMPLE */while (cinfo.next_scanline < cinfo.image_height) {/*jpeg_write_scanlines需要一组指向扫描线的指针。*这里的数组只有一个元素长,但你可以通过一次扫描线一次,如果这样更方便。*/row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];(void) jpeg_write_scanlines(&cinfo, row_pointer, 1);}/*步骤6:完成压缩 */jpeg_finish_compress(&cinfo);/*在finish_compress之后,我们可以关闭输出文件。*/fclose(outfile);/*步骤7:释放JPEG压缩对象* //*这是一个重要的步骤,因为它会释放大量的内存。*/jpeg_destroy_compress(&cinfo);}

libjpeg(1)相关推荐

  1. python会搞坏电脑吗_搞python,把原本php环境所需的libjpeg搞坏了

    前面因为搞python,安装过程中,系统默认的libjepg貌似被升级了.从我原有的libjpeg.8升级到了libjpeg.9.结果导致了我的apache没法启动了(一开始并不知道),我原有的php ...

  2. debian9宝塔面板安装php失败,宝塔面板安装php失败:提示No package 'libjpeg' found的解决办法...

    这篇文章主要为大家详细介绍了宝塔面板安装php失败:提示No package 'libjpeg' found的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借 ...

  3. windows下使用cmake编译zlib与libpng libjpeg 留此备份

    win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/,     选择最新版本的windows版本压缩包,进行下载.     jpeg ...

  4. 使用libjpeg进行图片压缩(哈夫曼算法,无损压缩)

    Huffman算法也是一种无损压缩算法,但与LZW压缩算法不同,Huffman需要得到每种字符出现概率的先验知识.通过计算字符序列中每种字符出现的频率,为每种字符进行唯一的编码设计,使得频率高的字符占 ...

  5. libjpeg编译使用详解

    一.交叉编译libjpeg # tar -xzvf libjpeg-turbo-1.2.1.tar.gz #cd libjpeg-turbo-1.2.1 #mkdir tmp # ./configur ...

  6. libjpeg的问题

    游戏项目是基于cocos2d-x开发的,但线上发现一个bug就是玩家在设置完自定义头像后直接闪退.凡是在设置该玩家头像的地方,游戏就直接闪退.最终定位到的问题是图片数据源有问题,我的机器是win7,图 ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  8. 开源库的使用方法以及libjpeg的移植详解

    一.开源库的使用方法 (1)移植(×××.解压.配置.修改Makefile.编译或交叉编译).移植的目的是由源码得到三个东西:动态库.so,静态库.a,头文件.h (2)部署(部署动态库so.部署静态 ...

  9. 图像解码之一——使用libjpeg解码jpeg图片

    多媒体应用在现在电子产品中的地位越来越重要,尤其是在嵌入式设备中.本系列文章将会介绍利用libjpeg解码jpeg文件,libpng解码png文件,libgif解码gif文件.本文为第一篇,介绍使用l ...

  10. android使用的图片压缩格式,Android 之使用libjpeg压缩图片

    一.环境 Android Studio 4.0.1 NDK R15c so包是2.0.6生成的 libturbojpeg.so 二.准备 1.编写native方法并用javah命令生成头文件 obje ...

最新文章

  1. 给迷茫的程序员一些中肯建议,你还在虚度光阴吗?
  2. php元素浮动会产生哪些影响,元素浮动的影响与三列布局的实现原理——2019年9月4日22时30分...
  3. C# SVN检出的代码,F12显示从元数据
  4. Python入门100题 | 第030题
  5. Exp1 PC平台逆向破解 20164309 欧阳彧骁
  6. 监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?
  7. To B 的产品经理和 To C 的产品经理有什么差别? To B 的产品经理的价值如何体现?
  8. css渲染(二) 文本
  9. node.js 安装使用http-server
  10. 第二十七篇、使用MVVM布局页面
  11. 谷歌 AI 专家爆料:90% 的人都不知道,编程能力差,其实都是输在了这点上!...
  12. iOS开发进阶教程【第一季小试牛刀】
  13. 数据挖掘原理与算法_【干货】UIUC韩家炜老师2020年新课:CS512 数据挖掘:原理与算法,附PPT...
  14. 通俗易懂地解释卷积?
  15. Android 客户端上开发人人客户端系列教程
  16. 显示文件内容时显示行号命令nl
  17. 不安装Office操作Excel文件(.xlsx)
  18. SwipeToLoadLayout布局中添加自定义控件仿美团、饿了吗等下拉效果
  19. 【51单片机】花式流水灯
  20. IOS开发UI-------button

热门文章

  1. rpm安装mysql5.7.16_【CentOS 6.6 RPM方式安装MySQL 5.7.16 】
  2. 复现Cell附图 |类器官的单细胞分析
  3. IT行业培训必读:优秀程序员的十个习惯
  4. FCPX插件:Color Titles动画彩色文本标题
  5. 如何文件服务器安装打印机,如何安装打印机方法图解
  6. java遍历子目录_Java遍历文件夹及子目录代码实例
  7. P5715 【深基3.例8】三位数排序(python3实现)
  8. 1.9 编程基础之顺序查找 02 输出最高分数的学生姓名 python
  9. 10产品经理要懂的-人性行为之自私的本质
  10. RTX5 | 互斥量01 - 互斥量的使用