2012-10-09 63 views
1

我正面臨一個問題,即將視圖上繪製的內容導出到base64編碼的PNG。我做了以前的研究發現,這兩項議題heare的計算器:將CustomView導出爲Base64編碼的PNG

Android canvas to jpg

Encode and decode bitmap object in base64 string in Android

我的問題是,是,當我解碼編碼字符串,我的圖像只顯示約15%頂部的圖像。

我的代碼如下:

private void doMagic() { 
    View paintview = findViewById(R.id.paintView1); 
    Log.d(TAG, "width: " + paintview.getWidth() + " height:" + paintview.getHeight()); 
    Bitmap bitmap = Bitmap.createBitmap(paintview.getWidth(), paintview.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    paintview.draw(canvas); 
    encodeTobase64(bitmap); 
} 

public static String encodeTobase64(Bitmap image) 
{ 
    Bitmap immagex=image; 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    boolean result = immagex.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    byte[] b = baos.toByteArray(); 
    String imageEncoded = Base64.encodeToString(b,Base64.NO_WRAP); 

    Log.d(TAG, ""+ result); 
    Log.d(TAG, "baos: " + baos.size()); 
    Log.d(TAG, "b: " + b.length); 
    Log.d(TAG, "imageEncoded: " + imageEncoded.length()); 
    Log.e(TAG, imageEncoded); 
    return imageEncoded; 
} 

至於日誌:

  • 尺寸記錄並解碼後的圖像都是一樣的(圖像其餘 只是白)
  • 結果爲真
  • baos.size()== b.length個== imageEncoded.length()* 6/8

這裏是編碼字符串:

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 

我不知道我做錯了。

回答

0

所以最終我想通了,出了什麼問題。

我做的每件事都是對的。但我登錄到logcat的imageEncoded String被截斷。因此只有超過4000個字符的圖像記錄。欲瞭解更多信息請登錄this discussion.