我需要读取用户的消息,迭代消息的每一位并用每个消息位覆盖最低有效图像位。
我目前有一个程序迭代每个图像像素,只是重写图像。
那么我怎样才能读取最不重要的图像位,以及如何获得每个消息位。
这是使用python 3.x
的灰度图像from PIL import Image
import numpy as np
import bitget
import scipy.misc as smp
im = Image.open("catBlack.png") #Can be many different formats.
pix = im.load()
print (im.size )#Get the width and hight of the image for iterating over
print (pix[1,1]) #Get the RGBA Value of the a pixel of an image
#pix[x,y] = value # Set the RGBA Value of the image (tup
data = np.zeros( (im.size[0],im.size[1],2), dtype=np.uint8 )
for i in range (im.size[0]):
for j in range (im.size[1]):
print (i,j)
data[i,j] = pix[i,j]
im = Image.fromarray(data)
im.save("GreyCat.png")
另外,我将如何解码此消息
欢呼帮助
答案 0 :(得分:2)
阅读完邮件后,您可以将其转换为ascii代码(ascii范围介于0到127之间),即您需要最大值。 7位代表字母
灰度可以是0到255之间的值,每个像素有8位,因此您可以使用2个最后4位像素来表示一个单词。
例如,您想传输hi
ascii代码h - 73 二进制73 - 1001001 ascii代码i - 74 ascii代码为i -1001010
假设颜色值为
1111111为第一个像素
0101010为第二个
第三次1100110
1111111为第四个
0001111为第五
1011111为第六个
第七次1100110
第八次1110001
第9届1111111
1010101 for tennth
首先我们必须传输h(01001001),所以我们将改变4个像素的最后两位 新的颜色值将是这样的
1111101,第一个像素
第二次0101000
第三次1100110
第四次1111101
现在对于i(01001010),值将类似于
0001101 for 5th 第六个1011100 第七次1100110 1110010为第八
现在我们将最后一位的剩余像素更改为全零 911 1111100 1010100为第十