Android 将位图保存到PNG文件会更改像素数据

Android 将位图保存到PNG文件会更改像素数据,android,bitmap,png,steganography,Android,Bitmap,Png,Steganography,我试图修改LSB的像素,以便在图片中存储信息。当我将位图存储到一个png文件中,该文件应该是无损的,并且重新加载时,像素值已经改变,编码和解码确实有效。当我将字符放回gether时,这当然会导致错误的值,但是大多数情况下,这可以通过从字节中减去136,然后再从字节中生成字符来修复。问题是存储和重新加载,就像我将位图直接传递给解码器一样,一切正常 请尝试在存储图像时提供质量值 bitmap.compress(Bitmap.CompressFormat.PNG,0, imageOut) 第二个参

我试图修改LSB的像素,以便在图片中存储信息。当我将位图存储到一个png文件中,该文件应该是无损的,并且重新加载时,像素值已经改变,编码和解码确实有效。当我将字符放回gether时,这当然会导致错误的值,但是大多数情况下,这可以通过从字节中减去136,然后再从字节中生成字符来修复。问题是存储和重新加载,就像我将位图直接传递给解码器一样,一切正常

请尝试在存储图像时提供质量值

 bitmap.compress(Bitmap.CompressFormat.PNG,0, imageOut)

第二个参数是介于0到100之间的质量值。

第二个参数没有任何影响。压缩机提示,0-100。0表示小尺寸压缩,100表示最大质量压缩。某些格式,如无损的PNG,将忽略质量设置。我们无法看到您对getMessage()的操作。此外,我们也看不到bytemessage是如何构造的。添加了用于创建bytemessage getMessage的方法从bytepictre数组中检索字符,该数组表示所有RGB值。当位图直接传递给编码器时,上述所有操作如何进行保存或重新加载位图时,必须发生错误更正正在更改您的原始RGB颜色。很抱歉,我仍然看不到您对getMessag()的结果做了什么。我看不出charstobyte()的charmesge参数包含什么。我们无法看到如何使用charstobyte()的结果。请显示完全一致的代码。完整的代码发布只是为了让您理解我的问题,当我从图片中解码时,我得到的完全是胡说八道,因为我将它们转换为字符之前的字节值太大了136,出于某种神奇的原因,当通过减去136进行更正时,我仍然得到一些奇怪的输出8到0 9到1和“abcdefghijklmnopqrstuvxyz”变为“abcdef`abcdefgqprstuvwqr”