📄 ftdib.h
字号:
// FTDib.h: interface for the FTDib class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_FTDIB_H__DDDAC797_13DB_41EE_84C3_BD8488AA20DD__INCLUDED_)
#define AFX_FTDIB_H__DDDAC797_13DB_41EE_84C3_BD8488AA20DD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma pack(1)
//-------------------------------------------
// 常用类型
//-------------------------------------------
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
//-------------------------------------------
// bmp文件头
//-------------------------------------------
struct BitmapFileHeader /* bf */
{
WORD bfType; //位图文件类型,必须为BMP
DWORD bfSize; //位图文件大小,以字节为单位
WORD bfReserved; //位图文件保留字,必须为0
WORD bfReservedEx; //位图文件保留字,必须为0
DWORD bfOffBits; //位图数据的起始位置,相对于位图文件头
}; //的偏移量,以字节为单位
//------------------------------------------
// bmp信息头
//------------------------------------------
struct BitmapInfoHeader /* bi */
{
DWORD biSize; //本结构所占字节数
long biWidth; //位图宽度,以像素为单位
long biHeight; //位图高度,以像素为单位
WORD biPlanes; //位图设备级别为1
WORD biBitPerPixel; //每像素所需的位数,必须是1(双色),4(16色),8(256色)或24(真彩色)
DWORD biCompression; //压缩类型,0(不压缩),1(BI_REL8),2(BI_REL4)
DWORD biDataSize; //位图数据区的大小,以字节为单位
long biHResolution; //水平分辨率
long biVResolution; //垂直分辨率
DWORD biColors; //实际使用颜色数
DWORD biImprotantColors; //显示过程中的重要颜色数
};
//------------------------------------------
// 颜色表元素结构
//------------------------------------------
struct RGB_Element /* rgb */
{
BYTE rgbBlue; //蓝色亮度
BYTE rgbGreen; //绿色亮度
BYTE rgbRed; //红色亮度
BYTE rgbReserved; //保留,必须为0
};
//------------------------------------------
// bmp信息
//------------------------------------------
struct BitmapInfo /* bmi */
{
BitmapInfoHeader bmiHeader; //位图信息头
RGB_Element bmiColors[1]; //颜色表
};
//-------------------------------------------
class FTDib
{
private:
RGB_Element *m_pRGB; //指向颜色表
BYTE *m_pData,*m_pData2; //
unsigned int m_numberOfColors; //颜色数
bool m_valid; //
BitmapFileHeader *m_pBitmapFileHeader; //指向文件头
BitmapInfoHeader *m_pBitmapInfoHeader; //指向信息头
BitmapInfo *m_pBitmapInfo; //
int byBitCount; //
DWORD dwWidthBytes; //
BYTE *pDib; //指向数据区
DWORD size; //颜色表和数据区的总大小
public:
FTDib();
~FTDib();
//基本属性和操作
char m_fileName[256]; //需要载入的文件的名字
char* GetFileName();
bool IsValid();
DWORD GetSize();
unsigned int GetWidth();
unsigned int GetHeight();
unsigned int GetNumberOfColors();
RGB_Element* GetRGB();
BYTE* GetData();
BYTE* GetData2();
DWORD GetDibWidthBytes();
BitmapInfo* GetInfo();
WORD PaletteSize(BYTE*lpDib);
WORD DIBNumColors(BYTE*lpDib);
void SaveFile(CString filename);
void LoadFile(CString dibFileName);
//扩展属性和操作
//void GradeToRGB();
//void RGBToGrade();
int LSBCoder(CString textFileName); //LSB信息隐藏
void LSBDecoder(CString dibFileName); //读取信息
};
#endif// !defined(AFX_FTDIB_H__027C7E5C_83DF_4725_B8D6_10202075E8BF__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -