代码之家  ›  专栏  ›  技术社区  ›  Hunt

在位图上写入注释

  •  1
  • Hunt  · 技术社区  · 15 年前

    我有一个位图显示在ImageView上,现在我想给一个工具来写用户在该位图上键入的注释。

    我试着用

     Canvas canvas = new Canvas(srcBitmap); canvas.drawText("Hello", 100,100,null);
    

    但这给了我以下的错误

    java.lang.IllegalStateException:异常: 传递到画布的不可变位图 构造器

    稍后我想将整个图像保存为位图

    2 回复  |  直到 15 年前
        1
  •  1
  •   Moss    15 年前

    你的位图是从哪里得到的?从例外情况来看,这意味着您正在直接使用无法修改的资源/资产(它在实际的apk中)。要避免这种情况,您需要复制位图并将其用于画布。给你一些 examples 一起工作。

        2
  •  0
  •   Jack Miller    11 年前

    正如莫斯指出的,位图需要是可变的。下面是一些您可以使用的源代码:

    //first, get bitmap and make it mutable
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
    //now, create canvas and paint as you like
    Canvas canvas = new Canvas(mutableBitmap);
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    paint.setStrokeWidth(5);
    canvas.drawLine(0, 0, canvas.getWidth(), canvas.getHeight(), paint);
    //finally, convert back to icon
    Drawable icon = new BitmapDrawable(context.getResources(), mutableBitmap);
    getSupportActionBar().setIcon(icon);