我想创建另一个位图,但每次尝试都是崩溃,这是错误消息
java.lang.IllegalArgumentException:y + height必须是< = bitmap.height() 在android.graphics.Bitmap.createBitmap(Bitmap.java:557) 在android.graphics.Bitmap.createBitmap(Bitmap.java:522) saveBitmap(GesturesActivity.java:166)
这是我尝试创作的地方:
public void saveBitmap(){
Bitmap bitmapToSave = Bitmap.createBitmap(view.getWidth(),view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapToSave);
view.draw(canvas);
int width = bitmapToSave.getWidth();
int height = bitmapToSave.getHeight();
System.out.println("view : "+view.getWidth());
System.out.println("view : "+view.getHeight());
System.out.println("btmp Width : "+width);
System.out.println("btmp Height : "+height);
Bitmap result = Bitmap.createBitmap(bitmapToSave, 0, view.getTop(), view.getWidth(), view.getWidth());
SaveImage(result);
}
感谢您的帮助:D
这是我的logcat:
> System.out﹕ view : 480
System.out﹕ view : 480
System.out﹕ btmp Width : 480
System.out﹕ btmp Height : 480
答案 0 :(得分:2)
尝试
Bitmap result = Bitmap.createBitmap(bitmapToSave, 0, 0, view.getWidth(), view.getHeight());
我认为问题是view.getTop是一个大于0的值。所以view.GetTop + view.getHeight()
不小于bitmap.height。
答案 1 :(得分:0)
在您的代码中,在第二个BitmapCreate
:
Bitmap result = Bitmap.createBitmap(bitmapToSave, 0, view.getTop(), view.getWidth(), view.getWidth());
高度参数(最后一个)设置为View.getWidth()
。但是,代码中没有任何地方检查过添加到视图顶部的视图宽度是否大于bitmapToSave
的高度。应该检查这种效果。