Adding text to a bitmap in memory in Android

2020-02-06 04:33发布

问题:

I'm trying to take a bitmap from resources, add a text message to it and return it to the caller of the method. It seemed like Canvas might be the method but the code below does not work.

public Bitmap annotateBmp(String storyId) {
    Bitmap b = BitmapFactory.decodeResource(m_Context.getResources(),     R.drawable.candle_android_pin_512);

    Canvas c = new Canvas(b);
    Paint p = new Paint();

    p.setColor(R.color.red);
    c.drawText("Do you see this?", 30, 210, p);

    return b;   //Why does b not have the text?
}

Did I miss a step or is there a better method?

回答1:

I tried your code and crashed on the first line. since the bitmap is immutable, so i have to add a line to create a mutable bitmap.

b = b.copy(Bitmap.Config.ARGB_8888, true);

then, your code just work fine. you do not specify the textSize, but this is not the reason. I think may be the origin coordinate of the text is out of the bitmap so you cannot see the text.