自己在学习的过程中,找到的资料。
为了方便大家整理。
原创:https://blog.csdn.net/qq_22717679/article/details/46982303
(1)嵌入文本
tpath='D:ffinal\origin1.txt';
name='D:\ffinal\2.bmp';
key=3;imgfile=imread(name);
img=imgfile;
fi=fopen(tpath,'r');
[msg,len]=fread(fi,'ubit1');
[m,n]=size(img);
if len>m*n
error('wrong!');
end
[x,y]=txtrandxy(img,len,key);
hideimg=img;
for i=1:len
if bitand(hideimg(x(i),y(1,i)),1)==msg(i)
continue
else if msg(i)==1
hideimg(x(i),y(i))=hideimg(x(i),y(i))+1;
else hideimg(x(i),y(i))=hideimg(x(i),y(i))-1;
end
end
end
imwrite(hideimg,'D:\ffinal\resulttxt.bmp');
function [x,y]=txtrandxy(matrix,len,key)
[m,n]=size(matrix);
step1=floor(m*n/len)+1;
step2=step1-3;
if step2<=0
error('wrong!');
end
rand('seed',key);
temp=rand(1,len);
locate=1;
x=zeros(1,len);
y=zeros(1,len);
x(1,1)=locate;
y(1,1)=locate;
for i=2:len
if temp(i)>0.5
locate=locate+step1;
else
locate=locate+step2;
end
x(1,i)=floor(locate/n)+1;
if mod(locate,n)==0
y(1,i)=n;
else
y(1,i)=mod(locate,n);
end
end
end
(2)提取文本
name='D:\ffinal\resulttxt.bmp';
key=3;
img=imread(name);
[m,n]=size(img);
if len>m*n
error('wrong!');
end
[x,y]=txtrandxy(img,len,key);
msg=zeros(1,len);
for i=1:len
msg(i)=bitand(img(x(i),y(i)),1);
fi=fopen('D:\ffinal\result.txt','w');
fwrite(fi,msg,'ubit1');
fclose(fi);
end
function [x,y]=txtrandxy(matrix,len,key)
[m,n]=size(matrix);
step1=floor(m*n/len)+1;
step2=step1-3;
if step2<=0
error('wrong!');
end
rand('seed',key);
temp=rand(1,len);
locate=1;
x=zeros(1,len);
y=zeros(1,len);
x(1,1)=locate;
y(1,1)=locate;
for i=2:len
if temp(i)>0.5
locate=locate+step1;
else
locate=locate+step2;
end
x(1,i)=floor(locate/n)+1;
if mod(locate,n)==0
y(1,i)=n;
else
y(1,i)=mod(locate,n);
end
end
end