2015-04-17 43 views
1

我有一个字节数组。我然后从中创建位图对象像这样与在ImageView的显示它:内存中和保存到文件位图是不同的相同的字节[]

Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
ByteBuffer buffer = ByteBuffer.wrap(bytes); 
image.copyPixelsFromBuffer(buffer); 
... 
ImageView imgView = (ImageView) findViewById(R.id.image); 
imgView.setImageBitmap(image); 

我然后创建一个文件,并当我打开该文件中该字节数组存储为图像

FileOutputStream fOut = new FileOutputStream(file); 
image.compress(Bitmap.CompressFormat.PNG, 100, fOut); 
fOut.flush(); 
fOut.close(); 

图库,它看起来不同于ImageView中的图像。我试图将字节直接写入文件,而不是位图,但是我根本无法打开图像。

的ImageView:

画廊:

enter image description here

我认为Bitmap.CompressFormat.PNG,忍着没有压缩。我在这里错过了什么?

编辑:

我不知道,如果它的事项,但原来的字节数组来自加密,从原画来到另一个字节数组。我从磁盘加载一个图像,创建一个字节数组,修改它,然后尝试使用它上面的。

回答

1

这可能是因为您在应用程序和图库中使用不同背景颜色查看图像。由于您使用Bitmap.Config.ARGB_8888并有效地为其提供随机数据,因此在生成的图像中某些像素将是透明的,并且在查看图像时背景的颜色将“闪耀”。如果您将应用程序的背景颜色设置为黑色,则该图像可能看起来像是在图库中显示的。

相关问题