Linux 编译 libjpeg-9e
jpeg的库有两个:一个是官方的 libjpeg 还有一个是 libjpeg-turbo
./configure -h # 查看编译参数
--enable-shared # 编译动态库
--enable-static # 编译静态库
--with-pic # fPIC
--prefix # 生成的文件安装位置 # jpeg 编译,带fPIC,默认会编译出静态库+动态库
./configure --with-pic --prefix=pwd/bin
make && make install
#include <stdio.h>
#include "jpeglib.h" /*************************************** jpeg 压缩大概流程 ************************************/
// 1.分配和初始化jpeg压缩对象
struct jpeg_compree_struct cinfo;
struct jpeg_error_mgr jerr; cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo); // 2.指定数据目标
FILE *fp = fopen(file_name, "wb");
jpeg_stdio_dest(&cinfo, fp); // 3.设置压缩参数
cinfo.image_width = 1920;
cinfo.image_height = 1080;
cinfo.input_components = 3; // 通道数,3彩色,1灰色
cinfo.in_color_space = JCS_RGB; // 输入图像的色彩空间
cinfo.arith_code = FALSE; // 编码方式,TRUE:算术编码;FALSE:霍夫曼编码
jpeg_set_defaultes(&cinfo);
jpeg_set_quality(&cinfo, 80, TRUE); // 设置压缩质量 // 4.开始压缩
jpeg_start_compress(&cinfo, TRUE);
JSAMPROW row_pointer[1];
int row_stride = cinfo.image_width * 3;
while(cinfo.next_scanline < cinfo.image_height)
{
row_pointer[0] = &image_buffer[cinfo.next_scanline * row_stride];
jpeg_write_scanlines(&cinfo, row_pointer, 1);
} // 5.完成
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo); /*************************************** jpeg 解压缩大概流程 **********************************/
// 1.分配和初始化jpeg解压缩对象
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr; cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo); // 2.数据源
FILE *fp = fopen(file_name, "rb");
jpeg_stdio_src(&cinfo, fp); // 3.获取图片信息
jpeg_read_header(&cinfo, TRUE); // 4.设置解压缩参数
cinfo.scale_num = 1;
cinfo.scale_denom = 8; // 设置压缩1/8,取值1、2、4、8 // 5.开始压缩
jpeg_start_decompress(&cinfo);
int row_stride = cinfo.output_width * cinfo.output_components;
JSAMPARRAY buffer;
buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr)&cinfo, JPOOL_IMAGE, row_stride, 1);
while(cinfo.output_scanline < cinfo.output_height)
{
jpeg_read_scanlines(&cinfo, buffer, 1);
} // 6.完成
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
Linux 编译 libjpeg-9e的更多相关文章
- Linux(CentOS6.5_X86.64)编译libjpeg出现“checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized”的解决
本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢! 今天在编译libjpeg 的时候,遇到下面的报错: checki ...
- Linux编译安装Apache+PHP
Linux编译安装Apache+PHP 来自:自学it网,http://www.zixue.it/. 1]编译安装Apache+PHP 1.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安 ...
- 【转】linux 编译安装nginx,配置自启动脚本
linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...
- linux编译中的常见问题
转linux编译中的常见问题 错误提示:Makefile:2: *** 遗漏分隔符 . 停止. 原因makefile中 gcc语句前 缺少一个 tab分割符 错误提示: bash: ./makefil ...
- linux 编译安装nginx,配置自启动脚本
本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...
- 【原创】Linux编译内核
Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功. 一.准备好必备的库和内核文件 1.添加必备的编译 ...
- 【转】VS2013编译libjpeg库
原文地址:http://blog.csdn.net/weixinhum/article/details/42718959 现在,很多图像处理工具和开源库都给出了图像解码的函数接口,然而有时这些接口并不 ...
- Linux编译Windows共享目录下代码
Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的.平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到 ...
- linux 编译安装PHP模块
本文移到:http://www.phpgay.com/Article/detail/classid/6/id/54.html linux 编译安装PHP模块 1.首先你要有你服务器上安装的PHP的版 ...
- [CentOS_7.4]Linux编译安装ffmpeg
[CentOS_7.4]Linux编译安装ffmpeg 安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...
随机推荐
- CentOS系统下,配制nginx访问favicon.ico
sudo vim /etc/nginx/nginx.conf 添加以下配制: # set site faviconlocation /favicon.ico { root html;} 完整配置如下: ...
- 【Azure Redis 缓存】如何使得Azure Redis可以仅从内网访问? Config 及 Timeout参数配置
问题描述 问题一:Redis服务,如何可以做到仅允许特定的子网内的服务器进行访问? 问题二:Redis服务,timeout和keepalive的设置是怎样的?是否可以配置成timeout 0? 问题三 ...
- 可视化技术在 Nebula Graph 中的应用
本文首发于 Nebula Graph Community 公众号 本文整理自 #可视化 on Live 主题直播,在本期直播中 3 位可视化嘉宾讲述了他们眼中的可视化,以及他们在可视化项目实践中踩过的 ...
- C程序分别实现下列字符阵列的输出
C程序分别实现下列字符阵列的输出:(https://zhuanlan.zhihu.com/p/443989560 可以参考这个博主写的) 1,左下三角形(代码) 1 #include <s ...
- URL(网址)的组成
URL(Uniform Resource Locator,统一资源定位器)就是通常所说的"网址".它是用来标识互联网上资源(如网页.图片.文件等)的唯一地址.URL由协议(如htt ...
- [学习笔记] CentOS + .Net后端常用的中间件工具安装
Redis 5.0+ 官方文档:https://redis.io/download/#redis-downloads sudo yum install redis RabbitMQ 3.7.11+ 官 ...
- 摆脱鼠标系列 - vscode 左右切换文档 快捷键换成 Ctrl + Alt + 左右箭头
为什么 默认快捷键是 Ctrl + PageUp PageDown 用的不太习惯 Ctrl + Alt + 左右箭头 和 双列的快捷键冲突了,那个就不用了,基本没用过 备份图
- 用户不在 sudoers 文件中。此事将被报告
在终端,进入root模式 vim /etc/sudoers 在 sudo (ALL:ALL) ALL下 添加 用户名 (ALL:ALL) ALL
- C语言中的rand()函数实例分析
一 前记: c语言中需要用到随机值得时候,每次都自己写,这样太浪费效率了,这次遇到了一个经典的代码,就珍藏起来吧. 二 实例分析: 1 #include <stdio.h> 2 3 int ...
- 记一次kafka无法生产发送消息排查经历
参考,欢迎点击原文:https://stackoverflow.com/questions/37902167/kafka-error-while-fetching-metadata-with-corr ...