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 ...
随机推荐
- Golang标准库——io
原文:Golang标准库--io 1.io io包提供了对I/O原语的基本接口.本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加 ...
- 【Azure Kubernetes】通过 kubelogin 进行非交互式登录AKS
问题描述 当对AKS的登录方式(认证和授权)从"Local Account with Kubernetes RBAC "改变为"Azure AD authenticati ...
- linux用户权限相关命令笔记
1,用户 和 权限 的基本概念 1.1 ls 扩展 ls -l 1.2 chmod 简单使用(重要) + 是加权限, - 是减权限 chmod 修改文件权限 chmod 修改目录权限: 想要在目录下执 ...
- Codeforces Round 729 (Div. 2)B. Plus and Multiply(构造、数学)
题面 链接 B. Plus and Multiply 题意 给定\(n,a,b\) 可以进行的操作 \(*a\) \(+b\) 最开始的数是1 问能否经过上面的两种操作将1变为n 题解 这题的关键是能 ...
- typeorm-model-generator 数据库映射Model 命令 - nest
typeorm-model-generator 数据库映射Model 命令 NestJs中的控制器.路由.Get.Post方法参数装饰器 https://blog.csdn.net/urwddd/ar ...
- Centos挂在U盘的时候无法挂载
网上的教学视频大部分全是以centos为教材底子--没办法更换系统了,这样方便麻! 我参考的文章: https://blog.csdn.net/shengjie87/article/details/1 ...
- python的替换函数strip(),replace()和re.sub()实例分析
前记: python是一个非常好用的语言,能够帮忙处理很多日常的耗费体力的事情.今天做一个脚本的时候,遇到了python替换的问题,这里就梳理一下知识点吧. 概念: 1.replace() 基本用法: ...
- 一张图搞清楚wait、sleep、join、yield四者区别,面试官直接被征服!
写在开头 在线程的生命周期中,不同状态之间切换时,可以通过调用sleep().wait().join().yield()等方法进行线程状态控制,针对这一部分知识点,面试官们也会做做文章,比如问你这些方 ...
- CMake 用法总结(转载)
原文地址 什么是 CMake All problems in computer science can be solved by another level of indirection. David ...
- 安装libevent
1.在libevent官网(http://libevent.org/)上下载压缩包(我下载的是libevent-2.1.8-stable.tar.gz) 2.解压压缩包:tar -zxvf libev ...