我在安卓上做隐写。我的代码如下:
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]
值都会在压缩过程中发生变化,因此我无法提取原始数据。我该如何解决这个问题呢?
发布于 2013-05-31 01:36:44
这是因为android手机使用alpha预乘来获得更好的PNG图像性能。几个月前,我试图创建一个变通方法,但没有成功。据我所知,到目前为止还没有针对android上这种类型的隐写术的解决方案。
如果你想为android创建更好、更健壮的隐写术,可以使用JPEG图像,并结合使用libjpeg库和NDK。此外,还有在图像中使用小波的库,这也是有效的。
https://stackoverflow.com/questions/4644683
复制相似问题