2010-09-27 72 views
11

嗨stackoverflow團隊我在將android base64字符串轉換爲位圖時出現問題。我正在使用相機來獲取圖像,我將圖像轉換爲base64字符串以發佈到服務器。我想在圖像視圖中顯示該圖像,因此如何在從相機獲取圖像後在ImageView中顯示圖像。請幫我解決問題。將base64字符串轉換爲位圖的Android代碼

+3

只是爲了更好的理解:你爲什麼想用base64圖像先進行編碼,然後發送解碼它將其再次顯示到ImageView中?首先獲取它並將其顯示在ImageView中,然後將其編碼到base64中以將其發送到服務器會不會更容易? ^^ – Tseng 2010-09-27 18:56:29

回答

21

假設你的圖像數據是在一個名爲myImageData字符串,下面應該做的伎倆:

byte[] imageAsBytes = Base64.decode(myImageData.getBytes(), Base64.DEFAULT); 
    ImageView image = (ImageView)this.findViewById(R.id.ImageView); 
    image.setImageBitmap(
      BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length) 
    ); 

對於Base64編碼解碼,可以使用http://iharder.sourceforge.net/current/java/base64/由於Android不包含2.2之前的Base64支持。

請注意,我沒有真正運行此代碼,因此您必須重新檢查錯誤。

+3

這是否也適用於base64編碼的png? – pfrank 2013-12-20 07:30:27

+1

在我的情況:'字節[] imageBitmap = Base64.decode(mEncodedImageData, \t \t \t \t \t \t \t Base64.DEFAULT); ' – 2015-04-04 09:12:43

8

編輯:接受職位現在已經更新到我的回答下面複製,要麼是正確的

接受的答案是不是至少在豆形軟糖,奇巧或棒棒糖正確的。您應該使用以下適用於JPEG,PNG或GIF圖像的內容。

byte[] imageAsBytes = Base64.decode(myImageData.getBytes(), Base64.DEFAULT); 
ImageView image = (ImageView)this.findViewById(R.id.ImageView); 
image.setImageBitmap(
     BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length) 
); 
+0

Tur - 這是不是TuomasR的代碼(這是公認的答案)? – AshesToAshes 2015-08-09 08:13:45

+2

@AshesToAshes現在他們已經更新了他們的答案,以複製我的(http://stackoverflow.com/posts/3801881/revisions) – Apqu 2015-08-13 12:45:47

3

記下簡單的方法傳遞Base64編碼字符串,它會返回位圖對象

Bitmap Base64ToBitmap(String myImageData) 
    { 
     byte[] imageAsBytes = Base64.decode(myImageData.getBytes(),Base64.DEFAULT); 
     return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); 
    } 
+0

這對我有效。你能否理解這種轉換? – 2016-11-01 09:47:13

相關問題