Matlab用图片和音频藏文件(续)

上一篇文章讲到通过Matlab实现图片隐藏文件,这一篇我使用C#调用Matlab编译的.Net程序集构建了一个小的应用程序。

原理很简单,使用上一篇文章中的Matlab代码,写成两个函数,分别用来隐藏和解析,代码如下:

function saveFileIntoImg(imgFileName,txtFileName)
fid = fopen(txtFileName, 'r');
%c = fread(fid, 5, 'uint8=>char')';
c = fread(fid);%读入文件数据
c=dec2bin(c);%转化为2进制数组
fclose(fid);
img=imread(imgFileName);%打开图片
%figure,imshow(img)
%先存行数到第一位
len1=size(c,1);
length = dec2bin(len1);
for i=1:32
    img(i)=bitset(img(i),1,0);    
end
for i=(33-size(length,2)):32
    img(i)=bitset(img(i),1,str2num(length(i+1-(33-size(length,2)))));
end
%再存列数到第二位
len2=size(c,2);
length = dec2bin(len2);
for i=1:32
    img(i)=bitset(img(i),2,0);    
end
for i=(33-size(length,2)):32
    img(i)=bitset(img(i),2,str2num(length(i+1-(33-size(length,2)))));
end
%存文件到第三位
for i=1:len1*len2
    img(i)=bitset(img(i),3,str2num(c(i)));%更改第一位
end
if(sum(imgFileName(end-3:end)~='.png')~=0)
    imgFileName(end-3:end)='.png';
    imwrite(img,imgFileName);
end
end

function y=getImgFile(filename)
img=imread(filename);%打开图片
len1=[];
for i=1:32
    len1=[len1 num2str(bitget(img(i),1))];%提取文件行数
end
len1=bin2dec(len1);
len2=[];
for i=1:32
    len2=[len2 num2str(bitget(img(i),2))];%提取文件列数
end
len2=bin2dec(len2);

res=[];
for i=1:len1*len2
    res=[res num2str(bitget(img(i),3))];
end
res=reshape(res,[len1 len2]);%转成二进制数组
res=bin2dec(res);%转十进制
y=char(res')%转成字符
end

然后使用matlab的deploytool编译成.Net程序集(dll),在C#工程中引用,

代码很简单

dc dc = new dc();
dc.saveFileIntoImg(imgFileName, txtFileName);


dc dc1 = new dc();
MWArray resFile = dc1.getImgFile((MWArray)fileName);
filerichTextBox.Text = resFile.ToString();

下面是截图:




*********************************把任意文件隐藏在一张图片里 ****************************************************************
http://bbs.windowsparty.com/showtopic-3270.aspx


最好有基本的命令行知识。不过也没关系,按照下面的步骤做就行了。
准备:1.一张图片 2.一个做试验的txt文件 3.WinRAR
步骤:
  1:准备一张图片,比如 winshome.jpg。准备目标文件,比如test.txt。我们要实现把test.txt隐藏在图片里面。
  2:把要隐藏的文件 test.txt 用 WinRAR 压缩。生成 test.rar 压缩包
  3:打开命令行提示符:点击“开始→运行”,输入“cmd”。
  4:我们假设中两个文件都存放在“ D:”下。输入命令:copy /b D:winshome.jpg + D:test.rar D:winshome.jpg
  5:ok,试试打开生成的图片 winshome.jpg,没错吧,的的确确是原来的图片。
  6:怎样打开那个 txt 文件?打开 WinRAR ,点击“文件→打开(快捷键 Ctrl + O )”,然后选择文件类型为“所有文


件”,找到 winshome.jpg ,选择打开看看,是不是有个 txt 文件?
这种方法适用于所有文件(基本上在没有工具的时候可以用此方法)。




相关推荐
<p> 欢迎参加英特尔® OpenVINO™工具套件初级课程 !本课程面向零基础学员,将从AI的基本概念开始,介绍人工智能与视觉应用的相关知识,并且帮助您快速理解英特尔® OpenVINO™工具套件的基本概念以及应用场景。整个课程包含了视频的处理,深度学习的相关知识,人工智能应用的推理加速,以及英特尔® OpenVINO™工具套件的Demo演示。通过本课程的学习,将帮助您快速上手计算机视觉的基本知识和英特尔® OpenVINO™ 工具套件的相关概念。 </p> <p> 为保证您顺利收听课程参与测试获取证书,还请您于<strong>电脑端</strong>进行课程收听学习! </p> <p> 为了便于您更好的学习本次课程,推荐您免费<strong>下载英特尔® OpenVINO™工具套件</strong>,下载地址:https://t.csdnimg.cn/yOf5 </p> <p> 收听课程并完成章节测试,可获得本课程<strong>专属定制证书</strong>,还可参与<strong>福利抽奖</strong>,活动详情:https://bss.csdn.net/m/topic/intel_openvino </p> <p> 8月1日-9月30日,学习完成【初级课程】的小伙伴,可以<span style="color:#FF0000;"><strong>免费学习【中级课程】</strong></span>,中级课程免费学习优惠券将在学完初级课程后的7个工作日内发送至您的账户,您可以在:<a href="https://i.csdn.net/#/wallet/coupon">https://i.csdn.net/#/wallet/coupon</a>查询优惠券情况,请大家报名初级课程后尽快学习哦~ </p> <p> <span style="font-size:12px;">请注意:点击报名即表示您确认您已年满18周岁,并且同意CSDN基于商务需求收集并使用您的个人信息,用于注册OpenVINO™工具套件及其课程。CSDN和英特尔会为您定制最新的科学技术和行业信息,将通过邮件或者短信的形式推送给您,您也可以随时取消订阅不再从CSDN或Intel接收此类信息。 查看更多详细信息请点击CSDN“<a href="https://passport.csdn.net/service">用户服务协议</a>”,英特尔“<a href="https://www.intel.cn/content/www/cn/zh/privacy/intel-privacy-notice.html?_ga=2.83783126.1562103805.1560759984-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">隐私声明</a>”和“<a href="https://www.intel.cn/content/www/cn/zh/legal/terms-of-use.html?_ga=2.84823001.1188745750.1560759986-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">使用条款</a>”。</span> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页