www.pudn.com > 图像处理源代码.rar > image.h
#if !defined _IMAGE_H_
#define _IMAGE_H_
//定义内存中的图象数据体
typedef struct{
int Width; //图象宽度
int Height; //图象高度
int ColorTabNumber; //颜色表项数
RGBQUAD *ColorTab; //颜色表
int BitCount; //每象素的位数
BYTE *ImgData; //图象数据,存储顺序为由下到上
}MYIMAGE;
typedef struct {
BYTE Manufacture; //PCX格式标志,总为0X0A
BYTE Version; //版本
BYTE Encoding; //总为1,表示PCX文件全部用RLL压缩
BYTE BitCount; //BITS PER PIXEL 每象素所占位数(每个位平面)
WORD Xmin,Ymin,Xmax,Ymax;//决定图象大小
WORD Hres,Vres; //目标设备的水平和垂直分辨率
BYTE Palette[48]; //16位调色板,256色在文件最后,以0x0C开始共769字节
BYTE Reserved; //保留字节
BYTE ColorPlanes; //位平面数
WORD BytePerLine; //每个扫描行字节数(每个位平面)
WORD PaletteType; //调色板类型 1--灰度 2--彩色
BYTE Filler[58]; //填充字节,为空
}PCXFILEHEADER;
#define BMPFILEHEADER_SIZE 14 //BMP文件头长度
#define BMPINFOHEADER_SIZE 40 //BMP信息头长度
#define PCXFILEHEADER_SIZE 128 //PCX文件头长度
#define TYPE_IMAGE 1
#define TYPE_HISTO 2
BOOL SavePcx(CString FileName,MYIMAGE* img,HWND hwnd);
BOOL SaveBmp(CString FileName,MYIMAGE* img,BOOL Compression,HWND hwnd);
MYIMAGE* ReadPcx(CString FileName,HWND hwnd);
MYIMAGE* ReadBmp(CString FileName,HWND hwnd);
BOOL DisplayHistogram(CWnd *pWnd,int *Histo);
typedef struct{ //HUFFMAN码表中的项
long int count; //该编码出现的次数,可以看作概率
int codelen; //HUFFMAN码长
long int codeval; //HUFFMAN编码
}CODETABLEITEM;
struct TWOTREE{ //HUFFMAN树中的结点
TWOTREE* lChild; //左分支
TWOTREE* rChild; //右分支
TWOTREE* Parent; //父结点
int indexvalue; //颜色索引值
long int count; //该结点下的所有概率之和
};
typedef struct {
int indexvalue; //颜色索引值
long int count; //该索引值对应的出现次数,可以表示概率
}HISTOARRAY;
#endif