我正在Android上进行隐写术。我的代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.src);
picw = mBitmap.getWidth();
pich = mBitmap.getHeight();
pix= new int[picw * pich];
mBitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);
try {
FileOutputStream fos = super.openFileOutput("dest.png", MODE_WORLD_READABLE);
mBitmap.compress(CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
}catch (Exception e) {
tv.setText(e.getMessage());
}
我的问题是,每当我使用Bitmap.compress()
方法保存源图像时,pix[0]
值在压缩期间会发生变化,因此我无法提取原始数据。我该如何解决这个问题?
答案 0 :(得分:0)
这是因为Android手机正在使用alpha预乘以获得更好的PNG图像性能。 几个月前我试图创建一个解决方法,但没有成功。 据我所知,迄今为止在Android上没有这种类型的隐写术解决方案。
如果你想为Android创建更好更强大的隐写术,可以使用libjpeg库和NDK组合的JPEG图像。此外,还有用于在图像中使用小波的库。