更新
我想要做的是将字符串渲染为位图。例如,如果字符串实例的字符串是" hello world",则生成的Bitmap将是相同字母的图像,并且可以与ImageView一起使用。
我已尝试过以下代码,但" bitmap"代码完成时仍为null。
public Bitmap StringToBitMap(String getContent) {
try {
byte[] encodeByte = Base64.decode(getContent, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,encodeByte.length);
return bitmap;
} catch (Exception e) {
e.getMessage();
return null;
}
}
答案 0 :(得分:1)
尝试这个
public Bitmap StringToBitMap(String getContent) {
try {
byte[] encodeByte = getContent.getBytes(Charset.forName("UTF-8"));
OR
byte[] encodeByte = getContent.getBytes("UTF-8");
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,encodeByte.length);
return bitmap;
}
catch (Exception e)
{
e.getMessage();
return null;
}
}
答案 1 :(得分:0)
您没有看到实际发生的错误,因为您打电话给" e.getMessage()"实际上并没有打印任何东西。它实际上是一个无操作它只返回一个没人处理的字符串。
更改此行:
e.getMessage();
对此:
Log.d("your tag", "Exception has occurred: ", e);
这将告诉你logcat调试器中的真正错误。
其他一些有用的调试字符串:
Log.d("your tag", "string length="+ getContent.length() + " content=" + (getContent==null)?"[null]":getContent.substr(0,20);
答案 2 :(得分:0)
试试这个......
public String BitMapToString(Bitmap bitmap) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 10, baos);
byte[] b = baos.toByteArray();
String temp = Base64.encodeToString(b, Base64.DEFAULT);
return temp;
}
并确保您的字符串不为空....
答案 3 :(得分:0)
试试这个:
byte[] decodedString = Base64.decode("YOUR STRING", Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
它适用于我,希望它有所帮助
答案 4 :(得分:0)
将字符串呈现为位图
public void drawText(String text, int textSize) {
// Get text dimensions
TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG
| Paint.LINEAR_TEXT_FLAG);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(textSize);
StaticLayout mTextLayout = new StaticLayout(text, textPaint,
370, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
// Create bitmap and canvas to draw to
Bitmap b = Bitmap.createBitmap(370, mTextLayout.getHeight(), Bitmap.Config.RGB_565);
Canvas c = new Canvas(b);
// Draw background
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG
| Paint.LINEAR_TEXT_FLAG);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
c.drawPaint(paint);
// Draw text
c.save();
c.translate(0, 0);
mTextLayout.draw(c);
c.restore();
printBitmap(b);
}
我发现,我之前使用的代码是用于更改位图 - stringbase 64 - bitmap
感谢selbie,他意识到我解释了一个以base64字符串编码而不是渲染文本的位图文件的字节数组。
答案 5 :(得分:0)
使用默认位图库方法decodeFile()。
Bitmap bitmap = BitmapFactory.decodeFile(filepath);
imageView.setImageBitmap(bitmap);