我正在尝试实施隐写术.我正在读取一个图像"a.jpeg"并通过在偏移50开始的最低有效位改变其连续的7个字节来插入一个字节.这是成功完成的,因为当我打印字节时,最后一位被相应地改变.然后我把它保存为"ao.jpeg".但是当我从50读取字节值时,它们与我保存的那个不一样.这是我的代码
public static void main(String[] args) throws IOException {
BufferedImage inputImage = ImageIO.read(new File("a.jpeg"));
int offset=50;
byte data = 7;
byte[] image = get_byte_data(inputImage);//function converts bufferedimage to byte array
//add data at end of each byte starting from offset
System.out.println("bytes altered are :");
for(int bit=7; bit>=0; --bit, ++offset)//for each bit of data
{
int b = (data >>> bit) & 1;
image[offset] = (byte)((image[offset] & 0xFE) | b );
String s1 = String.format("%8s", Integer.toBinaryString(image[offset] & 0xFF)).replace(' ', '0');
System.out.println(s1);
} …Run Code Online (Sandbox Code Playgroud)