gpt4 book ai didi

python - 如何获取多个字节的最低有效位?

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:00 25 4
gpt4 key购买 nike

我正在尝试从图像的行中获取 lsb,我设法到达这里:

from PIL import Image
import sys

challengeImg = Image.open('image.png')
pixels = challengeImg.load()
for x in range(2944):
red = (pixels[x,310][0])
bred = format(red,"b")
#print(green)
#print(bred)
green = (pixels[x,310][1])
bgreen = format(green,"b")
#print(bgreen)
#print(green)

好吧,在那之前我都很好,但现在我的问题是,我设法创建了以下代码:

num = 10100001
n = 0
lsb = num >> n &1
print(lsb)

它可以工作,但只能使用一个字节,我想通过 for 我可以实现一些目标,但我是初学者,我还没有设法让它工作,我如何从每个字节中提取 lsb在红色 channel 的像素行中(或绿色,我猜这是相同的过程)?

我想到我可以使用字典将字节中的位分组(1: 10011001, 2: 01100110 ...),然后使用循环在每个字节中应用 lsb 代码,无论如何我不知道我如何才能做到这一点,但我认为这不是最好的方法(也许它甚至无效)。

我有一个 2944x1912 的 .png 图像,其中包含隐藏在最低有效位中的信息,我放置的第一个代码是我正在开发的脚本,到目前为止它的作用是获取将第310行红色 channel 的像素信息转换为二进制。

第二个代码是获取字节的 lsb 的代码,我需要在第一个代码中实现它,因此第二个代码应该以某种方式将 8 中的所有位分组并选择最后一个以便保存在变量中,结果是(2944/8 = 368 = 368 字节。)

最佳答案

我想到的解决方案可能不是最佳的。如果还不够,我会寻找更好的解决方案,但同时:

num = 10100001
num_string = str(num)
lsb_string = num_string[len(num_string)-1]
lsb = int(lsb_string)
print(lsb)

# output: 1

关于python - 如何获取多个字节的最低有效位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com