资源简介
本项目使用CLion软件编写,使用语言为C++。
项目实现JPEG(JPG)格式图片中隐藏信息及隐藏信息的提取功能,支持中文信息隐藏。
注释完备,操作简单!
项目实现JPEG(JPG)格式图片中隐藏信息及隐藏信息的提取功能,支持中文信息隐藏。
注释完备,操作简单!
代码片段和文件信息
#include
#include
using namespace std;
class picture {
private:
ifstream ifile_picture;//该数据类型表示输入文件流,用于从文件读取信息。
ifstream ifile_txt;
ofstream ofile_picture;//该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ofstream ofile_txt;
int length_ifile_picture length_ifile_txt;//输入图片的长度
char name_ifile_picture[50] name_ifile_txt[50] name_ofile_picture[50] name_ofile_txt[50];
public:
void Open(ifstream &ifile char *name int &length);
void Encode();//图片信息隐藏
void Decode();//图片信息提取
};
void picture::Open(ifstream &ifile char *name int &length) {
ifile.open(name ios::binary | ios::in);//ios::in表示打开文件用于读取。
if (!ifile) {
cout << “Open “ << name << “ failed!“ << endl;
return;
}
ifile.seekg(0 ios::end);//表示输入流的结束位置
length = ifile.tellg();//返回当前定位指针的位置,也代表着输入流的大小。
ifile.seekg(0 ios::beg);//表示输入流的开始位置
}
void picture::Encode() {
char *str;
//请输入想要写入隐藏信息的图片的完整路径及名称,后缀为“.jpg“
cout << “请输入要被隐藏信息的图片名(需要加后缀名):“ << endl;
cin >> this->name_ifile_picture;//获取输入图片文件名称
Open(this->ifile_picture this->name_ifile_picture this->length_ifile_picture);
str = new char[length_ifile_picture + 5];
this->ifile_picture.read(str this->length_ifile_picture);
while (1) {
if (str[this->length_ifile_picture - 2] == -1 && str[this->length_ifile_picture - 1] == -39)
break; //判断是否到达图像结束标志 FF D9
else
this->length_ifile_picture--;
}
//请输入成功写入隐藏信息后生成的新图片的完整保存路径及名称,后缀为“.jpg“
cout << “请指定隐藏信息后的图片名(需要加后缀名):“ << endl;
cin >> this->name_ofile_picture;
this->ofile_picture.open(this->name_ofile_picture ios::binary | ios::out);
if (!this->ofile_picture) {
cout << “Open “ << this->name_ofile_picture << “ failed!“ << endl;
return;
}
this->ofile_picture.write(str this->length_ifile_picture);
this->ifile_picture.close();
delete[]str;
//输入带有隐藏信息的文本的完整路径及名称,后缀为“.txt“
cout << “请输入要隐藏的信息文本名(需要加后缀名):“ << endl;
cin >> this->name_ifile_txt;
Open(this->ifile_txt this->name_ifile_txt this->length_ifile_txt);
str = new char[length_ifile_txt + 5];
this->ifile_txt.read(str this->length_ifile_txt);
this->ofile_picture.write(str this->length_ifile_txt);
this->ifile_txt.close();
this->ofile_picture.close();
delete[]str;
cout << “隐藏成功!“ << endl;
}
void picture::Decode() //信息提取
{
char *str;
//请输入带有隐藏信息的图片的完整保存路径及名称,后缀为“.jpg“
cout << “请输入带有隐藏信息的图片名(需要加后缀名):“ << endl;
cin >> this->name_ifile_picture;//获取输入图片文件名称
Open(this->ifile_picture this->name_ifile_picture this->length_ifile_picture);
str = new char[length_ifile_picture + 5];
this->ifile_picture.read(str this->length_ifile_picture);
int l = this->length_ifile_picture;
while (1) {
if (str[l - 2] == -1 && str[l - 1] == -39)
break; //图像结束标志 FF D9
else
l--;
}
//输入提取信息后信息的保存文本的完整路径及名称,后缀为“.txt“
cout << “请输入信息提取
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-11-12 09:53 JEPG_Project\
目录 0 2019-11-12 09:37 JEPG_Project\cmake-build-debug\
文件 125 2019-11-12 09:12 JEPG_Project\CMakeLists.txt
文件 6148 2019-11-12 09:53 JEPG_Project\.DS_Store
文件 120 2019-11-12 09:53 __MACOSX\JEPG_Project\._.DS_Store
文件 4623 2019-11-12 09:53 JEPG_Project\main.cpp
目录 0 2019-11-12 09:53 JEPG_Project\.idea\
文件 6148 2019-11-12 09:25 JEPG_Project\cmake-build-debug\.DS_Store
文件 120 2019-11-12 09:25 __MACOSX\JEPG_Project\cmake-build-debug\._.DS_Store
目录 0 2019-11-12 09:37 JEPG_Project\cmake-build-debug\CMakeFiles\
文件 5173 2019-11-12 09:26 JEPG_Project\cmake-build-debug\Makefile
文件 5952 2019-11-12 09:26 JEPG_Project\cmake-build-debug\JEPG_Project.cbp
文件 1432 2019-11-12 09:26 JEPG_Project\cmake-build-debug\cmake_install.cmake
文件 29 2019-11-12 09:30 JEPG_Project\cmake-build-debug\hidden_mesg.txt
文件 81220 2019-11-12 09:28 JEPG_Project\cmake-build-debug\JEPG_Project
文件 42433 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeCache.txt
文件 93682 2018-12-25 08:58 JEPG_Project\cmake-build-debug\source.jpg
文件 27812 2019-10-07 06:24 JEPG_Project\cmake-build-debug\dlam.jpg
文件 233 2019-10-07 06:24 __MACOSX\JEPG_Project\cmake-build-debug\._dlam.jpg
文件 4524 2019-11-12 09:53 JEPG_Project\.idea\workspace.xm
文件 276 2019-11-12 09:12 JEPG_Project\.idea\modules.xm
文件 97 2019-11-12 09:12 JEPG_Project\.idea\JEPG_Project.iml
文件 240 2019-11-12 09:12 JEPG_Project\.idea\misc.xm
文件 85 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\cmake.check_cache
目录 0 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\3.15.3\
文件 28430 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\CMakeOutput.log
目录 0 2019-11-12 09:28 JEPG_Project\cmake-build-debug\CMakeFiles\JEPG_Project.dir\
文件 11134 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\Makefile.cmake
目录 0 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\CMakeTmp\
文件 2 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\progress.marks
文件 293 2019-11-12 09:26 JEPG_Project\cmake-build-debug\CMakeFiles\TargetDirectories.txt
............此处省略27个文件信息
- 上一篇:C语言源代码 《烟花》
- 下一篇:基于qt的心电监护软件系统设计
评论
共有 条评论