2012-10-02 33 views
0

我正在爲從網絡下載的PNG實現圖像緩存。將圖像保存到文件時淺綠色背景

除了白色背景的圖像以外,當從緩存(外部存儲)讀取它們時,它會很好地工作,並獲得淺綠色的背景。

從網絡下載圖像時,它們顯示正確。但是,在從外部存儲器進行保存和加載後,它們會顯示淺綠色背景。

在3個設備上測試,問題出在其中2個,三星Galaxy和HTC的願望。第三個是Galaxy Nexus,沒有這個問題。

代碼的相關部分:

保存到文件:

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

讀文件:

File file = new File(fullCacheDir.toString(), fileName); 

從網頁下載:

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpGet request = new HttpGet(urlString); 
HttpResponse response = httpClient.execute(request); 
InputStream is = response.getEntity().getContent(); 

TypedValue typedValue = new TypedValue(); 
typedValue.density = TypedValue.DENSITY_DEFAULT; 
Drawable drawable = Drawable.createFromResourceStream(null, typedValue, is, "src"); 
+0

你保存在SD卡上的圖像是什麼,它也是綠色背景? – jaredzhang

+0

對不起,我第一次拒絕你的問題!存儲器上的圖像是正確的(白色)。所以問題是加載它們。 – Ixx

+0

那麼你可以粘貼你的加載代碼嗎? – jaredzhang

回答

1

我相信,問題在於autoconve在顯示之前將圖像從RGB888轉換爲16位RGB565格式。這裏有一篇關於如何處理這個問題的好文章:Bitmap Format Woes

+0

這似乎是解決方案。更具體地說,Roman的Guy用inDither提到了解決方案BitmapFactory.Options == false。至少在我的測試設備上工作。測試更多後會選擇答案:) – Ixx