【发布时间】:2018-12-30 18:21:13
【问题描述】:
我正在尝试使用 LSB 方法编写一个隐写术应用程序,到目前为止,它对于一些图像格式来说已经足够好了。
但是它不适用于 GIF 图像,因为我注意到保存的 gif 具有几个不同的像素值(通常为 +- 1),并且 LSB 方法依赖于更改最低有效位,因此一些不同的值会抛出解码算法关闭。
我尝试过同时使用 imageio 和 PIL.Image,但在这两种情况下都是同样的问题
所以基本上我的问题是:为什么像素值在保存时会发生变化,甚至可以使用 LSB 对 GIF 进行编码和解码?
感谢您的帮助。
【问题讨论】:
-
你的 gif 有超过 255 种颜色吗?
-
阅读here 了解有关各种图像格式的更多信息。 GIF 虽然是无损的,但最多只能支持 256 种颜色,而 256**3 = 16777216。
-
我所做的是提取 gif 并使用修改后的第一帧复制它,提取的图像位于 RGB 像素数组中(我使用的示例有 (197,350,4) 作为尺寸)。所以是的,我猜它有超过 256 种颜色。但是为什么提取出来的图片有超过 256 种颜色呢?
-
因为 GIF 是基于调色板的,所以改变一个像素的 LSB 可以完全改变显示的颜色。
-
这就是我在更改 gif 代码后注意到的,现在我明白了原因。不过谢谢你的回答!!
标签: python python-imaging-library gif python-imageio