我正在将我的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 :(得分: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