1

我正在尝试为 Android 实现一个隐写术项目。我已经操纵了像素值并创建了一个新的位图。现在,当我使用将位图存储到手机内存或存储卡中时

//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   

并尝试使用 getPixels() 访问像素;

这些值将恢复为原始位图,即,而不是操作的位图。谁能弄清楚这是为什么?

4

2 回答 2

1

JPEG 是有损的,它可以在压缩时改变像素值。如果要保留颜色,请使用 PNG。

于 2013-01-26T04:56:36.873 回答
1
File myDir=new File("/sdcard/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); 
try {
       FileOutputStream out = new FileOutputStream(file);
       finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}

看看这个答案https://stackoverflow.com/a/7887114/964741

于 2011-11-27T05:27:08.450 回答