将字符串转换为位图得到null

时间:2015-05-21 04:06:13

标签: android bitmap

更新

我想要做的是将字符串渲染为位图。例如,如果字符串实例的字符串是" 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;

    }

}

6 个答案:

答案 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);