⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftdib.h

📁 基于LSB的信息隐藏技术——MFC——编译已经通过运行正常
💻 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 + -