libjpeg-turbo(2)
主要是介绍一下API,基本就是头文件里面的!
/*** 创建TurboJPEG压缩器实例。** @返回新创建的实例的句柄,如果出现错误则返回NULL* 错误请使用tjGetErrorStr()*/
tjhandle DLLCALL tjInitCompress(void);
/*** 将RGB,灰度或CMYK图像压缩为JPEG图像。* @handle 处理TurboJPEG压缩器或解压实例的句柄* @srcBuf 指向包含YUV平面图像的图像缓冲区的指针* @width 源图像的宽度(以像素为单位)* @pitch 源图像中每一行的字节数,默认0即可* @height 源图像的高度* @pixelFormat 源中使用的像素格式,参见TJPF,默认TJPF_RGB* @jpegBuf 指向要接收的图像缓冲区的指针的地址* @jpegSize 指向接受图像的长度* @jpegSubsamp 在使用时使用的色度次抽样的水平,参照TJSAMP,默认TJSAMP_422* @jpegQual 生成的JPEG图像的图像质量(1 =最差,100 =最佳)* @flags 标记位,默认为0* @如果成功返回0,如果发生错误则返回-1(请参阅#tjGetErrorStr())。*/
int DLLCALL tjCompress2(tjhandle handle,const unsigned char * srcBuf,int width,int pitch,int height,int pixelFormat,unsigned char ** jpegBuf,unsigned long * jpegSize,int jpegSubsamp,int jpegQual,int flags);
/***检索有关JPEG图像的信息,无需解压缩。* @handle 处理TurboJPEG实例的句柄* @jpegBuf jpegBuf指向包含JPEG图像的缓冲区的指针* @jpegSize JPEG图像的大小(以字节为单位)* @width 图像的宽度* @height 图像的高度* @jpegSubsamp 代表JPEG图像压缩时使用的色度子采样级别 参考TJSAMP“色度子采样选项”* @jpegColorspace 代表JPEG颜色空间常量,参考 TJCS* @如果成功返回0,如果发生错误则返回-1
*/
int DLLCALL tjDecompressHeader3(tjhandle handle,const unsigned char *jpegBuf, unsigned long jpegSize, int *width,int *height, int *jpegSubsamp, int *jpegColorspace);
/***销毁TurboJPEG压缩器实例。* @handle 处理TurboJPEG压缩器的一个句柄* @如果成功返回0,如果发生错误则返回-1(请参阅#tjGetErrorStr())。*/
int DLLCALL tjDestroy(tjhandle handle);
/***返回一个描述性错误消息,解释为什么最后一个命令失败。*/
DLLEXPORT char* DLLCALL tjGetErrorStr(void);
/***为TurboJPEG分配图像缓冲区。你应该永远使用此函数为tjCompress2和tjTransform分配JPEG目标缓冲区,*除非您禁用自动缓冲区通过设置TJFLAG_NOREALLOC。)*@bytes 要分配的字节数*返回一个指向指定数量的新分配缓冲区的指针*/
DLLEXPORT unsigned char * DLLCALL tjAlloc(int bytes);/***释放先前由TurboJPEG分配的图像缓冲区。你应该永远使用此功能来释放自动的JPEG目标缓冲区*@buffer 缓冲区的缓冲区地址*/
DLLEXPORT void DLLCALL tjFree(unsigned char * buffer);
/*** 将JPEG图像解压缩为RGB,灰度或CMYK图像* @handle 处理TurboJPEG压缩器或解压实例的句柄* @jpegBuf 指向包含要解压缩的JPEG图像的缓冲区的指针* @jpegSize JPEG图像的大小(以字节为单位)* @dstBuf 指向将接收解压缩的图像缓冲区的指针* @width 目标图像的所需宽度* @pitch 默认0即可* @height 目标图像的高度* @pixelFormat 像素格式,参见TJPF,默认TJPF_RGB* @flags 默认0* @如果成功返回0,如果发生错误则返回-1(请参阅#tjGetErrorStr())。*/
DLLEXPORT int DLLCALL tjDecompress2(tjhandle handle,const unsigned char *jpegBuf, unsigned long jpegSize, unsigned char *dstBuf,int width, int pitch, int height, int pixelFormat, int flags);
/***使用给定参数保存JPEG图像所需的缓冲区的最大大小(以字节为单位)。*这个函数返回的字节数大于未压缩源映像的大小。*这样做的原因是JPEG格式使用16位的系数,因此当转换为JPEG格式时,使用非常高的高频率内容来扩展而不是压缩的高质量的JPEG图像是可能的。*这样的图像代表了一个非常罕见的情况,但是由于在压缩之前无法预测JPEG图像的大小,所以必须处理这个情况。**@width 图像的宽度*@height 图像的高度*@jpegSubsamp 要使用的色度子采样的级别生成JPEG图像(参见TJSAMP“色度子采样选项”。)* @返回保存所需的缓冲区的最大大小(以字节为单位)* image,如果参数超出范围,则为-1。*/
DLLEXPORT unsigned long DLLCALL tjBufSize(int width,int height,int jpegSubsamp);
/***用给定参数保存YUV平面图像所需的缓冲区的大小(以字节为单位)。**@width 图像的宽度(以像素为单位)*@pad 图像的每一平面上的每一行的宽度都被填充到这个字节数的最近的倍数中(必须是2的幂)。*@height 图像的高度*@subsamp 要使用的色度子采样的级别生成JPEG图像(参见TJSAMP“色度子采样选项”。)** @返回保存图像所需的缓冲区大小(以字节为单位),或-1如果参数超出范围。*/
DLLEXPORT unsigned long DLLCALL tjBufSizeYUV2(int width,int pad,int height,int subsamp);
libjpeg-turbo(2)相关推荐
- TuRBO(2019NIPS)—贝叶斯优化的应用
Scalable Global Optimization via Local Bayesian Optimization 概述 一. GPR应用的简单例子 二.TuRBO的文章介绍 2.1 局部信赖域 ...
- Turbo译码原理说明(一)
Turbo Codes译码是一类具有反馈结构的伪随机译码器,2个码可以交替互不影响的译码,并且还可以通过关于系统码信息位的软判决输出相互传递信息,进行递推式迭代译码.Turbo译码结构如图1所示: 1 ...
- CRC辅助的Turbo码增强译码算法(PLVA)
为了提高传统迭代译码的Turbo译码算法,本文把Turbo码和CRC看成一个级联码,研究利用CRC的冗余来增强Turbo译码性能.由于Turbo码的分量码是卷积码,所以采用基于List Viterbi ...
- 可能是最详细的Android图片压缩原理分析(二)—— 鲁班压缩算法解析
本篇文章已授权微信公众号guolin_blog(郭霖)独家发布 稀土掘金链接 前言 通过上一篇,我们了解了一些关于图片压缩的基础知识,这篇文章我们主要讲解一下鲁班压缩的算法逻辑,很多博客都是从Gith ...
- 基于TensorRT的BERT实时自然语言理解(下)
基于TensorRT的BERT实时自然语言理解(下) BERT Inference with TensorRT 请参阅Python脚本bert_inference.py还有详细的Jupyter not ...
- C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用
1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...
- (转)C语言位运算详解
地址:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者:911 说明:本文参考了http://www2.ts ...
- (二)Cacti监控
一.Cacti的安装 1.安装环境:RedHat AS 4 2.安装Apache.MySQL.PHP (1).安装MySQL 下载地址:http://dev.mysql.com/downloads/m ...
- android中ocr解决方案(tesseract)
2019独角兽企业重金招聘Python工程师标准>>> android应用中ocr的解决方案大致有两种,而采用最多的还是tesseract.小弟就在这里将我最近两天解决思路写下来,如 ...
- VC++动态链接库(DLL)编程(一)――理解库
VC++动态链接库(DLL)编程(一) ――理解库 作者:宋宝华 e-mail:21cnbao@21cn.com 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概 ...
最新文章
- QT的QDeadlineTimer类的使用
- python连接es_Elasticsearch --- 3. ik中文分词器, python操作es
- grunt之filerev、usemin
- Oracle中的正则表达式(REPLACE 和REGEXP_REPLACE)---转载自http://database.51cto.com/art/201009/228270.htm...
- Lombok中@Data注解 @ToString注解 @NoArgsConstructo注解 @AllArgsConstructor注解
- java 路径通配符_java实现路径通配符*,**,?
- 从0开始的Python学习006流程控制
- BUAA软工第0次作业
- 一个例子搞懂Nacos服务发现
- win11找不到开启蓝牙开关,设备管理器也没有蓝牙
- win7设置动态桌面,将视频设为桌面
- 小学4年级计算机课作业题目,部编版小学语文四年级下册课堂同步作业试题及答案(全册).doc...
- 社交网络崛起带来口碑营销的复兴
- 手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技
- 多节点单进程Nodelet
- hive中NULL值问题
- 用Ubuntu20.04开热点
- FP7195大功率零压差全程无频闪调光DC-DC恒流芯片(兼容调光器:PWM调光,无极调光,0/1-10V调光)
- Redis云平台Cachecloud开源-视频教程
- 计算机网络——数字数据的数字编码