我目前的设计思想是:
BMP图像文件文件头由54个字节的数据段组成,其中包含有该位图文件的类型、大小、图像尺寸及打印格式等; 从第55个字节开始,是该文件的图像数据部分,数据的排列顺序以图像的左下角为起点,从左到右、从下到上,每连续3个字节便描述图像一个像素点的颜色信息,这三个字节分别代表蓝、绿、红三基色在此像素中的亮度,采用最低有效法来隐藏信息,即将信息隐藏到原始图像各RGB 字节的最低几位。由于信息隐藏在最低几位,相当于叠加一个能量微弱的信号,因而在视觉上很难察觉。根据试验结果,一幅图像中每一象素点各RGB 字节的最低位或最低2 位用随机数替代,人眼察觉不到。首先测试数据文件的长度(4 字节) ,将该长度的*2 位依次隐藏到图像文件第一行的前*2 字节中;然后再将数据文件的各位依次隐藏到图像文件第二行、第三行的各RGB 字节中。一行图像可隐藏的数据为head.width * 3/8 字节,因第一行用于隐藏数据文件长度,故图像文件中最多可隐藏(head.depth - 1) *head.width *3/8 字节的数据,需隐藏的数据文件的大小不能超过此值(约为图像文件大小的1/8) 。

解决方案 »

  1.   

    我目前的设计思想是:
    BMP图像文件是位图文件,其文件头由54个字节的数据段组成,其中包含有该位图文件的类型、大小、图像尺寸及打印格式等; 从第55个字节开始,是该文件的图像数据部分,数据的排列顺序以图像的左下角为起点,从左到右、从下到上,每连续3个字节便描述图像一个像素点的颜色信息,这三个字节分别代表蓝、绿、红三基色在此像素中的亮度,根据试验结果,一幅图像中每一象素点各RGB 字节的最低位或最低2 位用随机数替代,人眼察觉不到。
    首先测试数据文件的长度(4 字节) ,将该长度的*2 位依次隐藏到图像文件第一行的前*2 字节中;然后再将数据文件的各位依次隐藏到图像文件第二行、第三行的各RGB 字节中。一行图像可隐藏的数据为head.width * 3/8 字节,因第一行用于隐藏数据文件长度,故图像文件中最多可隐藏(head.depth - 1) *head.width *3/8 字节的数据,需隐藏的数据文件的大小不能超过此值(约为图像文件大小的1/8) 。当然,你可以用你自己的算法
      

  2.   

    没验证“根据试验结果,一幅图像中每一象素点各RGB 字节的最低位或最低2 位用随机数替代,人眼察觉不到”
    如果真的那样的话,按照你的思路写起来4个小时就应该差不多了。
    写代码其实没有你想象的那么困难。
      

  3.   

    关键就是我不会写……
    “一幅图像中每一象素点各RGB 字节的最低位或最低2 位用随机数替代,人眼察觉不到”是正确的,在网上有多篇文章论证了这点