资源简介
程序本身通过文本中的文字将对24位图进行信息嵌入隐藏其中,然后能通过程序将嵌入其中的信息提出,保存在另一个文本当中。
代码片段和文件信息
#include
#include
#include
#include
#pragma once
#pragma pack(1)
using namespace std;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
//BMP文件头
typedef struct tagBITMAPFILEHEADER
{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
};
//BMP文件信息头
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
};
class Bmp24
{
public:
Bmp24(void);
~Bmp24(void);
void LoadFile(const char *filename);
void SaveFile(const char *filename);
void embedTxt(const char *filename);
void ExtractTxt(const char *filename);
private:
tagBITMAPFILEHEADER *_pbmfh; //指向BMP文件头
tagBITMAPINFOHEADER *_pbmih; //指向BMP文件信息头
BYTE *_pbmd; //指向BMP数据区
DWORD _size; //BMP数据区大小(以字节为单位)
};
Bmp24::Bmp24(void)
{
_pbmfh = new tagBITMAPFILEHEADER;
_pbmih = new tagBITMAPINFOHEADER;
_pbmd = NULL;
_size = 0;
}
Bmp24::~Bmp24(void)
{
delete _pbmfh;
delete _pbmih;
if (_pbmd)
{
delete _pbmd;
}
}
//载入BMP文件
void Bmp24::LoadFile(const char *filename)
{
ifstream InFile;
InFile.open(filename ios::in | ios::binary);
InFile.read((char*)_pbmfh sizeof(tagBITMAPFILEHEADER));
InFile.read((char*)_pbmih sizeof(tagBITMAPINFOHEADER));
//直接定位BMP数据区,跳过调色板
_size = _pbmfh->bfSize - _pbmfh->bfOffBits;
_pbmd = new BYTE[_size];
InFile.read((char*)_pbmd _size);
InFile.close();
cout << “读取文件成功!“ << endl;
}
//保存BMP文件
void Bmp24::SaveFile(const char *filename)
{
ofstream OutFile;
OutFile.open(filename ios::out | ios::binary);
OutFile.write((char*)_pbmfh sizeof(tagBITMAPFILEHEADER));
OutFile.write((char*)_pbmih sizeof(tagBITMAPINFOHEADER));
OutFile.write((char*)_pbmd _size);
OutFile.close();
cout << “保存文件成功!“ << endl;
}
//嵌入文本文件
void Bmp24::embedTxt(const char *filename)
{
int ik;
ifstream TxtFile;
TxtFile.open(filename ios::in | ios::binary);
TxtFile.seekg(0 TxtFile.end);
DWORD TxtFileLength = TxtFile.tellg();
if (_size < TxtFileLength * 8)
{
- 上一篇:纯C版的微信打飞机游戏
- 下一篇:约瑟夫环问题 循环队列实现C++源码
相关资源
- 三维点云边界提取
- opencv激光中心线的提取
- c++MFC车牌自动识别定位,只能定位和
- ORB特征点提取
- VC图像处理-用Canny算子提取边缘
- 三维重建 特征点提取 立体匹配
- Sift特征点提取与匹配opencv库
- 道路提取算法 c++ opencv
- 图像边缘提取经典算法MFC实现
- 从DEM数据中提取等高线——MFC编写
- 魔兽ID提取器第二版源码
- (LSB算法)数字水印的嵌入和提取V
- 虹膜分割 Iris Segmentation C++和opencv实现
- surf特征提取与匹配
- 编译原理LL1文法的mfc实现含消除左递
- Moravec算子
- 特征点提取和影像匹配
- SIFT特征提取C++
- 基于VC++与OpenCV的圆心坐标提取
- 用于图像边缘提取的prewitt算子的C++代
- 数字水印的(LSB算法)嵌入和提取V
- 汉字点阵字库建立与提取
- openCV纹理图像特征提取,比较两幅图
- VMTK Tutorials
- 信息隐藏数字水印LSB算法
- VC++ 图像文字提取
- 文件加密软件与信息隐藏
- LSD线特征提取方法+Opencv实现C++
- vibe运动目标提取opencv C++源代码
- C++ 隐藏桌面文件
评论
共有 条评论