首先,定义一些重要的函数
1、编码函数:将一段话编码成二进制数,储存在列表中 。返回二进制数列表和这个列表的行数和每行对应的列数。
def encode(s): #编码函数
n=len(s)
l=list() #编码数组
num=list()
k=0 #记录数组中字符的个数
for i in range(n):
l.append([])
num.append(len(s[i]))
for j in range(len(s[i])):
l[i].append(bin(ord(s[i][j])).replace('0b',''))
return l,num
2、解码函数:将存储二进制数的列表解码成一段话。返回解码后得到的字符串。
def decode(l): #解码函数
s=list()
for i in range(len(l)):
s.append([])
s[i]=''.join(chr(k) for k in [int(j,2) for j in l[i]])
return s
3、信息隐藏函数:给定一张图片和二进制数列表,将二进制数列表中的每个二进制数存储在图片像素对应的二进制数的最后一位,一个像素可以存储3位,一个7位的二进制需要用3个像素来存储。返回隐藏信息后的图片。
def hide(pic,en): #将已解码的字符串中的信息隐藏进图片
pic=Image.open(pic).convert('RGB') #将4通道RGBA像素转化为3通道RGB像素
np=numpy.array(pi