2013-05-19 6 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 для drawText the 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 - это простой текст. Я действительно нуждался в этом, чтобы конвертировать SMS, содержащие тексты в формате Юникод (особенно индийские скрипты), которые отображаются в виде ящиков. – newbee

+0

Попробуйте настроить текст в TextView как HTML с помощью метода Html.fromHtml(): mTextView.setText (Html.fromHtml («ваша строка в Юникоде здесь»)); Это должно позволить вам отображать символы без полей – Guardanis

Смежные вопросы