我现在在ImageView上显示了一个位图,我想给一个工具来写一个用户在该位图上输入的注释。
我尝试使用
Canvas canvas = new Canvas(srcBitmap); canvas.drawText("Hello", 100,100,null);
但是这给了我以下错误
java.lang.IllegalStateException: 传递给Canvas的不可变位图 构造
稍后我想将整个图像保存为位图
答案 0 :(得分:1)
你从哪里得到你的位图?从例外情况来看,这意味着您正在使用无法修改的资源/资产(它位于实际的apk中)。为避免这种情况,您需要制作位图的副本并将其用于画布。在这里你可以使用examples。
答案 1 :(得分:0)
正如Moss所指出的,位图需要是可变的。以下是一些源代码,您可以这样做:
//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);