2013-05-19 34 views
0

我將文本字符串轉換爲我的android應用程序中的圖像。通過關注SO上的各種帖子,我編寫了這些代碼。但它不顯示圖像。 代碼有問題嗎?將文本字符串轉換爲圖像

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    et = (EditText) findViewById(R.id.editText1); 
    iv = (ImageView) findViewById(R.id.imageView1); 
    btn = (Button) findViewById(R.id.button1); 



    btn.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String text = et.getText().toString(); 

      byte[] data = null; 
      try { 
       data = text.getBytes("UTF-8"); 
      } catch (UnsupportedEncodingException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      final String base64 = Base64.encodeToString(data, Base64.DEFAULT); 
      Bitmap bit = StringToBitMap(base64); 
      iv.setImageBitmap(bit); 

     } 

    }); 

} 

public Bitmap StringToBitMap(String encodedString){ 
    try{ 
     byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT); 
     Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length); 
     return bitmap; 
    }catch(Exception e){ 
     e.getMessage(); 
     return null; 
    } 
     } 
+0

這實際上並沒有將其轉換爲圖像。這將構成一個字符串的字節轉換爲base64,然後嘗試將它們顯示爲一個圖像,正如您找到的圖像不起作用。如果你想從中得到一個圖像,我認爲你需要使用canvas/Paint來繪製String的字符串。 – FoamyGuy

+0

@FoamyGuy謝謝..你能解釋一些代碼嗎?我是android的第一個計時器 – newbee

回答

0

嘗試使用此方法的字節[]轉換爲圖像:

Bitmap bit = BitmapFactory.decodeByteArray(data, 0, data.length); 

沒有理由爲什麼你應該編碼您的字節數組轉換爲Base64的立即解碼回來。

雖然真正的問題是:你的EditText實際上是什麼?它是一個轉換爲字符串的圖像,還是隻是你想要顯示的文本?

如果它實際上是一個圖像,那麼上述將工作。

如果沒有,那麼這是錯誤的做法,它聽起來像你需要做什麼,就像FoamyGuy在評論中說,是繪製文本到的ImageView帆布:https://stackoverflow.com/a/10923478/1426565

儘管如此,如果你有爲什麼不只是在TextView中顯示它,並自定義TextView以顯示你想要的一切(即字體大小,顏色,背景等)?這可能是更好的方法。如果您不確定如何使用TextView,請查看:http://developer.android.com/reference/android/widget/TextView.html

+0

@ Cruceo- EditText實際上是一個純文本。我實際上需要這個功能來轉換包含unicode文本(特別是印度腳本)的SMS,這些文本顯示爲方框。 – newbee

+0

嘗試使用Html.fromHtml()方法將TextView中的文本設置爲HTML:mTextView.setText(Html.fromHtml(「your unicode string here」));這應該允許您顯示沒有框的字符 – Guardanis