【问题标题】:How to change the last bit of every pixel in Image and save it as a New Image?如何更改图像中每个像素的最后一位并将其保存为新图像?
【发布时间】:2019-12-21 05:18:23
【问题描述】:

我目前正在从事隐写术项目,我是初学者。

我在 Python 中开发了以下代码来补充所有像素的最后一位并将结果图像保存为新图像说:Output.jpg

在我使用img.save() 函数保存图像之前,代码中的一切都正常工作:当我重新打开同一张图像时,像素保持不变。

我打算在这个项目中使用 Java。

from PIL import Image
img=Image.open("P:\Input.jpg")
img=img.convert("RGB")
width,height=img.size
pix=img.load()
for i in range(width):
   for j in range(height):
       r,g,b=pix[i,j]
       bin_b=bin(b)
       bin_list=list(bin_b)
       if bin_list[-1] == 0:
          bin_list[-1]=1
       else:
          bin_list[-1]=0
       b=int("".join(str(i) for i in bin_list),2)
       pix[i,j]=(r,g,b)
img.save("P:\Sampleout.jpg")

我需要将修改后的像素设置为oldpixels+1 或oldpixels-1,而不是相同的oldpixel 位置i,j

【问题讨论】:

    标签: python steganography


    【解决方案1】:

    一个可能的问题是您使用的是 jpeg 格式。默认情况下,此图像格式使用 有损 压缩方案进行压缩,该方案允许稍微改变像素数据的值以获得更小的图像占用空间。保存为 jpeg 并重新加载后,不能保证最低位(或实际任何位)相同。

    如果您想尝试这种处理方式,您应该改用无损格式,如 BMP、TGA 或 PNG。 JPEG 也有lossless mode,但大多数软件默认不使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      相关资源
      最近更新 更多