jpeg_compress_struct
时间: 2023-06-22 12:47:20 浏览: 237
`jpeg_compress_struct` 是 libjpeg 库中的一个结构体,它包含了压缩 JPEG 图像所需的所有参数和选项。该结构体的定义如下:
```c
typedef struct jpeg_compress_struct {
struct jpeg_error_mgr * err; /* 错误处理器 */
struct jpeg_memory_mgr * mem; /* 内存管理器 */
struct jpeg_destination_mgr * dest; /* 输出数据处理器 */
JDIMENSION image_width; /* 图像宽度 */
JDIMENSION image_height; /* 图像高度 */
int input_components; /* 输入图像的颜色分量数 */
J_COLOR_SPACE in_color_space; /* 输入图像的颜色空间 */
jpeg_component_info * comp_info; /* 颜色分量信息 */
JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS]; /* 量化表指针 */
JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS]; /* DC 熵编码表指针 */
JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS]; /* AC 熵编码表指针 */
UINT8 * script_space; /* 算法脚本空间 */
size_t script_space_size; /* 算法脚本空间大小 */
int num_scans; /* 扫描数 */
const jpeg_scan_info * scan_info; /* 扫描信息 */
BOOL raw_data_in; /* 是否为原始数据 */
BOOL arith_code; /* 是否使用算术编码 */
BOOL optimize_coding; /* 是否优化编码 */
int smoothing_factor; /* 平滑因子 */
J_DCT_METHOD dct_method; /* DCT 变换方法 */
int restart_interval; /* 重启间隔 */
int restart_in_rows; /* 以行数为重启间隔 */
J_BUF_MODE buffer_mode; /* 数据缓冲模式 */
J_COLOR_TRANSFORM color_transform; /* 颜色转换方法 */
BOOL progressive_mode; /* 是否为渐进式扫描 */
int max_h_samp_factor; /* 采样因子的最大水平值 */
int max_v_samp_factor; /* 采样因子的最大垂直值 */
JDIMENSION total_iMCU_rows; /* 图像的总 iMCU 行数 */
JSAMPLE * sample_range_limit; /* 量化范围限制器 */
/* 还有一些其他的成员,比较少用到 */
} jpeg_compress_struct;
```
这个结构体中的各个成员变量用来描述压缩 JPEG 图像所需的各种信息,包括输入图像的宽度和高度、颜色空间、颜色分量的信息、量化表、熵编码表、算法脚本空间等等。在使用 libjpeg 库进行 JPEG 图像压缩时,需要创建一个 `jpeg_compress_struct` 结构体,并对其中的成员变量进行设置,然后再调用相应的函数进行压缩操作。
阅读全文