1

我已经编写了在图像上绘制文本的代码,它工作正常我在 potrait 模式下捕获图像,但是当我在横向模式下捕获图像时应用程序崩溃,我收到异常 Java.lang.IllegalStateException: Immutable bitmap pass to Canvas构造函数

Canvas canvas = new Canvas(photo);
                    Typeface tf = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
                    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
                    paint.setStyle(Style.FILL);
                    paint.setTypeface(tf);
                    paint.setColor(Color.WHITE);
                    paint.setStrokeWidth(12); 
                    canvas.drawBitmap(photo, 0, 0, paint);
                    canvas.drawText(topaste, 10, 115, paint);
                    image.setImageBitmap(photo);
4

1 回答 1

1

基本上,画布对象需要一个新的位图来绘制,传入你的不可变图像会破坏稍后绘制操作的要点。下面的代码为画布创建一个新的位图。您将需要替换宽度和高度变量以匹配您的用例:

Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
Canvas canvas = new Canvas(photo);
于 2012-11-01T14:49:12.880 回答