Android-加載透明PNG圖片變黑的問題

png和jpg做爲兩種最經常使用的圖片格式,首先咱們要知道他們的區別:緩存

1.從通常圖片的外觀上來講,他們是沒法直接判斷的網絡

2.從文件大小上來講,一樣一張圖png確定比jpg的大工具

3.經過查資料我們能夠發現,png便可移植網絡圖形格式,也是一種位圖文件存儲格式,能夠進行無損壓縮。而jpg是咱們最多見的圖片格式了,圖片佔用存儲較少,可是也犧牲了圖片質量。spa

總結爲一句話是二者最大的區別是有損和無損。code

而出現加載透明png圖片變黑的問題,通常狀況下這樣的:blog

服務端的圖片是透明png的無損圖片,咱們下載到本地的時候強制把它處理爲了jpg的形式,形成圖片質量有損。接口

jpg圖片是沒有背景透明這個概念的。圖片

 

圖片下載保存到本地SD卡的工具方法,可使用以下代碼:it

 1  /**
 2      * 將文件寫到本地緩存
 3      * @param fileName
 4      * @param in
 5      * @param length 總的文件長度 
 6      * @param callBack 下載回調接口 
 7      */
 8     private static void writeToLocal(String fileName, InputStream in,int length,DownloadCallback callback) {
 9         if(in == null) {
10             return;
11         }
12         FileOutputStream out = null;
13         byte[] buffer = new byte[1024];
14         int len = -1;
15         long count = 0;
16         try {
17             out = new FileOutputStream(fileName);// 爲圖片文件實例化輸出流
18             while ((len = in.read(buffer)) != -1) {
19                 out.write(buffer, 0, len);
20                 count += len;
21                 
22                 if(callback != null) {
23                     callback.onDownload(length, count, false, false);
24                 }
25             }
26             
27             if(callback != null) {
28                 callback.onDownload(length, count, true, false);
29             }
30             
31             out.flush();
32             out.close();
33             in.close();
34         } catch (IOException e1) {
35             e1.printStackTrace();
36             try {
37                 if (out != null) {
38                     out.close();
39                     out = null;
40                 }
41                 
42                 in.close();
43                 in = null;
44             } catch (IOException e) {
45                 e.printStackTrace();
46             }
47             
48             // 網絡出現異常,刪除下載文件
49             new File(fileName).delete();
50             if(callback != null) {
51                 callback.onDownload(length, count, false, true);
52             }
53         }
54     }
相關文章
相關標籤/搜索