资源简介
程序本身通过文本中的文字将对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++源码
相关资源
- Canny 边沿提取算子 C++代码实现
- 基于LSB的BMP文件信息隐藏
- linux C/C++实现的通过url访问网页提取网
- 链码 特征检测 MFC c++ 边缘提取
- VC++视频帧提取软件
- 音频感知哈希函数的提取matlab codes
- 基于opencv3.2的Moravec、Forstner、Harris算
- 任务管理器中隐藏进程 支持win10 win
- C++实现灰度图像的边缘检测、提取及
- 字模提取程序汇编、C语言编码
- 语音识别MFCC特征提取matlab代码
- MFCC参数提取的matlab实现
- U盘专杀文件夹EXE和快捷方式病毒,恢
- Gabor滤波器纹理特征提取
- VC++关于纹理特征提取的代码完整
- MFC对话框标题栏的隐藏和高度设置
- 字体轮廓提取
- opencv提取图片中人轮廓
- JPEG图片EXIF信息提取及缩略图显示VC
- 使用RANSAC提取平面
- C++代码提取LBP特征
- 语音信号处理- MFCC特征提取
- 通过MFC和OpenGL实现点云数据的提取和
- 字形轮廓提取显示C#源码
- LSD直线提取算法Opencv
- 轮廓提取的算法原理和代码C++实现
- CQCC、LPCC、MFCC和PLP的matlab程序.rar
- 用Canny算子提取边缘Visual C++源代码
- oled字模提取软件
- C++实战源码-隐藏和显示标题栏
评论
共有 条评论