2015-04-17 67 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並有效地爲其提供隨機數據,因此在生成的圖像中某些像素將是透明的,並且在查看圖像時背景的顏色將「閃耀」。如果您將應用程序的背景顏色設置爲黑色,則該圖像可能看起來像是在圖庫中顯示的。

相關問題