这是简单的代码,我没有得到设置位图的结果,而是得到了null。谁能告诉我我在哪里犯错了?
String test = "test";
byte[] byteA = test.getBytes();
Bitmap bmp = BitmapFactory.decodeByteArray(byteA, 0, byteA.length); //<- I get null here
ImageView image = (ImageView) findViewById(R.id.image);
image.setImageBitmap(bmp);
更新
好的,所以我无法像我想的那样将文本转换为图像。这样呢?这会创建位图吗?
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setTextSize(16);
paint.setAntiAlias(true);
paint.setTypeface(Typeface.MONOSPACE);
Bitmap bm = Bitmap.createBitmap(16, 16, Bitmap.Config.ALPHA_8);
float x = bm.getWidth();
float y = bm.getHeight();
Canvas c = new Canvas(bm);
c.drawText("Test", x, y, paint);
最佳答案
从the documentation:
字符串“test”中涉及的字节不是有效的位图,对吗?
如果将文本“test”保存在名为foo.png
或foo.jpg
等的文件中,并尝试在Windows中打开它,那么您期望的结果是什么?这将是一个错误:这些字节根本不是任何已知格式的有效图像。
编辑:我对Android图形一无所知,但您的更新肯定看起来像是一种将文本绘制到位图上的更为合理的方法。
关于java - 为什么BitmapFactory.decodeByteArray返回null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6520745/