在灰度图像的最低图像位中隐藏一条消息



我需要在用户的消息中阅读,遍历每个消息的每一点,覆盖每个消息的最小图像位。

我目前有一个程序,可以在每个图像像素上迭代,然后重写图像。

因此,我该如何阅读最不重要的图像位,以及如何获取每个消息。

这是用于使用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")

另外,我将如何解码此消息

欢呼帮助

阅读消息后,您可以将其转换为ASCII代码(ASCII范围为0到127之间),即您需要最大。7位代表字母

灰度可以具有从0到255的值,每个像素具有8位,因此您可以使用2位4个像素的最后位代表一个单词。

例如,您想传输HI

ASCII H -73的ASCII代码二进制73-1001001I -74的ASCII代码I -1001010的ASCII代码

  • 现在,您将像您提到的那样迭代每个像素
  • 阅读像素的颜色值将其转换为二进制

假设颜色值是

第一个像素的1111111
01010对于第二个
1100110第三
1111111第四
0001111第五
1011111第六名
1100110第七
1110001第八
1111111第九
1010101第十

首先,我们必须传输h(01001001),因此我们将更改两个像素的最后两个位新的颜色值将是这样的

第一个像素的1111101
0101000第二
1100110第三
1111101第四

现在i(01001010)值将就像

0001101第五
1011100第六名
1100110第七
1110010第八

现在,我们将将剩余的像素最后位更改为所有零
1111100第九
1010100用于第十

最新更新