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 }