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


png和jpg作為兩種最常用的圖片格式,首先我們要知道他們的區別:

1.從一般圖片的外觀上來說,他們是無法直接判斷的

2.從文件大小上來說,同樣一張圖png肯定比jpg的大

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

總結為一句話是兩者最大的區別是有損和無損。

而出現加載透明png圖片變黑的問題,一般情況下這樣的:

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

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

 

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

 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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM