在android中,y + height必须是< = bitmap.height()

时间:2013-11-13 16:24:40

标签: android bitmap

我想创建另一个位图,但每次尝试都是崩溃,这是错误消息

  

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

2 个答案:

答案 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的高度。应该检查这种效果。