Image 使用光栅在图像的四个部分放置不可见信息
我从这个网站上找到了一个教程(它也包括代码),我想把这四条信息放到我在下面的链接中画的图片的四个不同部分,但我不知道如何确切地把信息放到第四部分。这是我在下面使用光栅修改的代码的一部分Image 使用光栅在图像的四个部分放置不可见信息,image,raster,steganography,lsb,Image,Raster,Steganography,Lsb,我从这个网站上找到了一个教程(它也包括代码),我想把这四条信息放到我在下面的链接中画的图片的四个不同部分,但我不知道如何确切地把信息放到第四部分。这是我在下面使用光栅修改的代码的一部分 private byte[] get_byte_data(BufferedImage image) { WritableRaster raster = image.getRaster(); int imageHeight=image.getHeight()/2; System.out.p
private byte[] get_byte_data(BufferedImage image) {
WritableRaster raster = image.getRaster();
int imageHeight=image.getHeight()/2;
System.out.println("ImageHeight: "+imageHeight);
int imageWidth=image.getWidth()/2;
System.out.println("ImageWidth: "+imageWidth);
DataBufferByte buffer = (DataBufferByte) raster.getDataBuffer();
return buffer.getData();
}
如何才能将消息准确地放入我想要的部分?应该分别理解隐写术和Java图像处理的概念。 在隐写术中,我们将隐藏消息的字节嵌入到载体消息的字节中。 在载波的字节数组中,我们无法根据您的要求确定每个图像部分的起始位置 所以你要做的就是这样。首先将载体映像拆分为四个单独的映像,然后根据需要将字节与隐藏数据字节一起追加。 然后创建新的图像对象,并在正确的位置绘制这四个独立的图像 我将从您先前的一个相关问题中提供答案 在这里,我向您展示了如何在图像的每一个R、G、B和一个组件中隐藏不同的消息,方便地说是4。要使用它,请将第一条消息嵌入R并保存输出。然后加载该输出并将下一条消息存储在G中,然后重新保存输出。等等由于每条消息都使用了每种颜色成分,因此每条消息的最大大小为(p-32)/8 优点:它有效地实现了您想要的,代码已经为您准备好了,可能的最大容量 缺点:由于加载->嵌入->保存x4特性,使用起来有点麻烦
现在,如果你真的很坚定,并且你真的想将图像分成4部分,你必须在代码中应用以下更改(从上一个问题开始,但从网站上提供的原始代码开始):
- 更改GUI,使其具有4个文本框
- 加载完整图像后,在
方法中只传递四分之一的图像。这四个象限应该有坐标(0:maxX/2,0:maxY/2),(0:maxX/2,maxY/2:maxY),(maxX/2:maxX,0:maxY/2)和(maxX/2:maxX,maxY/2:maxY),其中embedMessage
和maxX=yourimage.getWidth()
。您可以使用图像数据上的maxY=yourimage.getHeight()
方法来执行此操作getSubimage