主要介绍如何利用IJG code作为一个子例函数库来读写JPEG图像文件,在阅读该段代码时建议结合文档libjpeg.txt。
source code:example.c
reference:USING THE IJG JPEG LIBRARY
Part A :子程序说明
- 压缩部分
|
|
- 解压缩部分
|
|
Part B:必备数据类型及函数说明
数据类型
JSAMPLE:一种自定义数据类型,通常是”unsigned char”,除非修改了头文件”jmorecfg.h”。详情请参见头文件jmorecfg.h。
JSAMPROW:同上,表示一行JSAMPLE类型的数组
JSAMPARRAY:同上,表示一个2DJSAMPLE类型的数组
struct jpeg_compress_struct:jpeg压缩对象结构体
struct jpeg_decompress_struct:jpeg解压缩对象结构体
struct jpeg_error_mgr:jpeg错误处理结构体
函数定义
- jpeg_std_error(&jerr):建立错误处理方式
- jpeg_create_compress(&cinfo):初始化JPEG压缩对象
- jpeg_stdio_dest(&cinfo, outfile):关联jpeg对象与输出文件
- jpeg_set_default(&cinfo):设置默认压缩参数
- jpeg_set_quality(&cinfo, quality, TRUE):设置图片的压缩率,数值越大,压缩越小
- jpeg_start_compress(&cinfo, TRUE):开始压缩
- jpeg_write_scanlines(&cinfo, row_pointer, 1):将row_pointer指向的1行scanline写入文件中
- jpeg_finish_compress(&cinfo):完成压缩
- jpeg_destroy_compress(&cinfo):释放JPEG压缩对象
- setjmp:具体参阅原文档
- longjmp:具体参阅原文档
- jpeg_create_decompress(&cinfo):初始化JPEG解压缩对象
- jpeg_stdio_src(&cinfo, infile):指定数据源
- jpeg_read_header(&cinfo, TRUE):读入文件的头部信息
- jpeg_start_decompress(&cinfo):开始解压缩
- jpeg_read_scanlines(&cinfo, buffer, 1):读入数据并将其存储到缓存区中,1表示每次读出的行数
- put_scanline_someplace:自定义函数
- jpeg_finish_decompress(&cinfo):完成解压缩
- jpeg_destroy_decompress(&cinfo):释放JPEG解压缩对象
更多详细内容,请参考原文档:
source code:example.c
reference:USING THE IJG JPEG LIBRARY