我目前正在做一个隐写术项目(为我自己)。我已经编写了一些代码,但是在考虑之后,我知道有更好的方法来做我想做的事。
另外 - 这是我第一次使用动态内存分配和二进制文件 I/O。
这是我在 BMP 图像中隐藏文本文件的代码:链接到代码
另请注意,我没有使用 LSB 将消息存储在此代码中,而是替换了 alpha 字节,假设它是每像素 32 位 (bbp) 图像。如果图像中有 1、4、8、16、24 bpp,这就是为什么这不是很灵活的另一个原因。例如,如果它是 24 bbp,则 alpha 通道将是 6 位,而不是 1 字节。
我的问题是使用结构将整个 BMP 读入内存的最佳方法是什么?
这就是我的看法:
- 读取位图文件头
- 阅读 BITMAPINFOHEDER
- 阅读 ColorTable(如果有的话)
- 读取 PixelArray
我知道如何阅读这两个标题,但 ColorTable 让我感到困惑,我不知道 ColorTable 的大小,或者图像中是否有一个。
此外,在 PixelArray 之后,维基百科说可能有一个 ICC 颜色配置文件,我怎么知道存在一个?链接到 BMP 文件格式(维基百科)
另一件事,因为我需要知道标头信息才能知道 PixelArray 从哪里开始,所以我需要像上面显示的那样进行多次读取,对吧?
很抱歉所有问题都在一个,但我现在真的不确定该怎么做。