主要是介绍一下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);