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);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值