2011-11-27 77 views
1

我正在尝试为Android实现一个隐写项目。我操纵了像素值并创建了一个新的位图。现在,当我的位图存储到使用在Android中保存位图

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

手机内存或存储卡,并尝试访问像素背部使用的getPixels();

将值恢复回原始位图而不是操纵的位图。 任何人都可以认为这是为什么?

回答

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

+0

在实际创建文件时没有问题,但位图的像素值发生了变化。是否有办法阻止它? –

+0

例如,红色,蓝色和绿色的位图值是8,8,15,但是在保存位图后,值为16 16 16.可以有人告诉我如何防止这种情况? –

1

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