Python 如何更改图像中每个像素的最后一位并将其保存为新图像?

Python 如何更改图像中每个像素的最后一位并将其保存为新图像?,python,steganography,Python,Steganography,我目前在隐写术项目工作,我是一个初学者 我用Python开发了以下代码来补充所有像素的最后一位,并将生成的图像保存为新图像,比如:Output.jpg 在我使用img.save()函数保存图像之前,代码中的所有内容都可以正常工作:当我重新打开同一图像时,像素保持不变 我的目标是在这个项目中使用Java from PIL import Image img=Image.open("P:\Input.jpg") img=img.convert("RGB") width,height=img.size

我目前在隐写术项目工作,我是一个初学者

我用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")

我需要将修改后的像素设置为
oldpoxides+1
oldpoxides-1
,并且在
I,j

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


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

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

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