简单的隐写术与python 3 / PIL

时间:2018-02-02 23:08:48

标签: python python-3.x python-imaging-library steganography

我使用PIL在Python中使用基本隐写术脚本时遇到问题。

这是我的目标:我想存储我要隐藏的图像的每个波段的像素值的四个MSB。然后将它们存储在另一个图像的四个LSB中。为了揭示隐藏的图像,我只想提取四个LSB并添加' 0000'。

我知道这是非常具有破坏性的。但隐藏的图像至少应该消失。实际上并没有。我不知道我的代码有什么问题。你能帮帮我吗?

from PIL import Image

global image, pixels, s_image, s_pixels

def hide_stegano():

    def new_pixel(pix, s_pix):
        return (pix & 240) | ((s_pix & 240) >> 4)

    l, h = image.size
    temp = Image.new('RGB', (l, h))
    temp_pix = temp.load()

    for i in range(l):
        for j in range(h):
            rgb = list(pixels[i, j])
            s_rgb = list(s_pixels[i, j])
            for band, (value, s_value) in enumerate(zip(rgb, s_rgb)):
                rgb[band] = new_pixel(value, s_value)

            temp_pix[i, j] = tuple(rgb)

    temp.save("temp.jpg")
    temp.show()


def reveal_stegano():

    def new_pixel(pix):
        return (pix & 15) << 4

    l, h = image.size
    temp = Image.new('RGB', (l, h))
    temp_pix = temp.load()

    for i in range(l):
        for j in range(h):
            rgb = list(pixels[i, j])
            for band, value in enumerate(rgb):
                rgb[band] = new_pixel(value)
            temp_pix[i, j] = tuple(rgb)

    temp.save("temp.jpg")
    temp.show()

image = Image.open("image1.jpg").convert('RGB')
pixels = image.load()
image.show()

# Hidden image
s_image = Image.open("image2.jpg").convert('RGB')
s_image = s_image.resize(image.size)
s_pixels = image.load()
s_image.show()


hide_stegano()


reveal_stegano()

你看错了吗?

祝你好运

0 个答案:

没有答案