2015-05-02 19 views
1

我正在嘗試使用AndroidImageSlider庫並使用我已經下載爲base64字符串的圖像填充它。將編碼後的base64圖像轉換爲Android中的File對象

該庫只接受URL,R.drawable值和File對象作爲參數。

我想將圖像字符串轉換爲File對象以便傳遞給庫函數。我已經能夠從base_64解碼並轉換爲一個字節[]到目前爲止。

String imageData; 
byte[] imgBytesData = android.util.Base64.decode(imageData, android.util.Base64.DEFAULT); 
+1

我認爲使用FileOutputStream創建文件可能更好,然後通過服務器上的寧靜URL提供。假設圖像數據已經是你想要的格式,只需要將數據寫入文件即可。看到這個線程:http://stackoverflow.com/questions/20879639/write-base64-encoded-image-to-file – DrewT

+0

但是,如果我要創建一個'FileOutputStream',我該如何訪問一個File對象?該庫特別需要File參數,對FileOutputStream還有更多的東西嗎? – apoorvk

+1

只需在將圖像寫入文件後從寧靜的網址投放。無論如何,似乎你已經修好了! – DrewT

回答

1

您需要將File對象保存到磁盤才能正常工作。此方法會將imageData字符串保存到磁盤並返回關聯的File對象。

public static File saveImage(final Context context, final String imageData) { 
    final byte[] imgBytesData = android.util.Base64.decode(imageData, 
      android.util.Base64.DEFAULT); 

    final File file = File.createTempFile("image", null, context.getCacheDir()); 
    final FileOutputStream fileOutputStream; 
    try { 
     fileOutputStream = new FileOutputStream(file); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     return null; 
    } 

    final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
      fileOutputStream); 
    try { 
     bufferedOutputStream.write(imgBytesData); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } finally { 
     try { 
      bufferedOutputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return file; 
} 

它在應用程序的「緩存」目錄中創建一個臨時文件。但是,您仍然有責任在您不再需要該文件時刪除該文件。

相關問題