读取DCT《转》

读取DCT《转》
今天总算用IJL实现了,高兴,意外..没想到在只看了下ijl.h文件的情况下就弄对了...其实手册上没给出来..上次找了好久没找到。

今天显示看了下CXimage的图像模块...结果发现封装的比ijl.h还要好...看了手册也没发现有直接读取DCT系数的函数...

于是CSDN上继续查找...找到一个关于去DCT系数的提问,在他的启发下认真看了下
JPEG_PROPERTIES 结构体的 raw_coefs的说明..
结合前面读取RGB数据,总算可以求出DCT系数了。

给出关键部分的代码:

////////////////////////////////////////////////////////////////////////////
// Name: RAW_DATA_TYPES_STATE
//
// Purpose: Stores data types: raw dct coefficients or raw sampled data.
// Pointer to structure in JPEG_PROPERTIES is NULL, if any raw
// data isn't request (DIBBytes!=NULL).
//
// Fields:
// short* raw_ptrs[4] - pointers to buffers with raw data; one pointer
// corresponds one JPG component;
// data_type - 0 - raw dct coefficients, 1 - raw sampled data.
////////////////////////////////////////////////////////////////////////////
JPEG_CORE_PROPERTIES image;
RAW_DATA_TYPES_STATE pDCT; //声明一个存储DCT系数的空间,IJL的用法就是要读取什么数据就自己声明空间然后读取~
pDCT.data_type = 0; //=0表示读取DCT系数,如果=1是读取是sampled data..不清楚,汗一个
//这里数组0存 Y的DCT系数,然后分别是Cr,Cb。多以1,2的大小是0的1/4。3是用不到的..所以这里申请空间的时候可以计算好。
for(i=0;i<4;i++) pDCT.raw_ptrs[i] = new unsigned short[dwImageSize];
image.jprops.raw_coefs = &pDCT;//赋值给image
ijlRead(&image, IJL_JFILE_READWHOLEIMAGE) 调用读取模块。
好了然后就可以在pDCT中读取数据了.
在网上没找到,希望给出来帮助其他要找的人~~

你可能感兴趣的:(读取DCT《转》)