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;
     }
      }
4

1 回答 1

0

试试这个将 byte[] 转换为图像:

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

于 2013-05-19T17:11:48.433 回答