创建无法正常工作的位图

时间:2015-11-03 23:46:24

标签: java android matrix bitmap

由于某种原因,我的位图创建无效。我发现了一个错误吗?当我尝试使用Matrix制作新的位图时,它表示我的宽度和高度必须大于0,这没有任何意义。

Bitmap tempbmp = Bitmap.createBitmap(image1, 0, 0, newwidth, newheight, matrix, true);

我知道我似乎没有做过任何研究,我有,这没有任何意义。我尝试过很多事情,包括将newwidth和newheight更改为常量,但仍然无法正常工作。如果有帮助,这是堆栈跟踪跟踪

11-03 18:32:00.700: E/AndroidRuntime(9113): java.lang.IllegalArgumentException: width and height must be > 0
11-03 18:32:00.700: E/AndroidRuntime(9113):     at android.graphics.Bitmap.createBitmap(Bitmap.java:603)
11-03 18:32:00.700: E/AndroidRuntime(9113):     at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
11-03 18:32:00.700: E/AndroidRuntime(9113):     at com.ajayinkingston.antiverse.Level.tick(Level.java:291)
11-03 18:32:00.700: E/AndroidRuntime(9113):     at com.ajayinkingston.antiverse.Logic.tick(Logic.java:65)
11-03 18:32:00.700: E/AndroidRuntime(9113):     at com.ajayinkingston.antiverse.GameView.run(GameView.java:142)
11-03 18:32:00.700: E/AndroidRuntime(9113):     at java.lang.Thread.run(Thread.java:856)

我正在尝试创建一个旋转门户网站。我希望有一个矩阵平移,旋转和缩放,但我没有得到那个工作。我决定取出翻译并制作图像,然后绘制图像。矩阵在这里创建:

matrix.reset();             
matrix.setScale((newwidth)/image1.getWidth(), (newheight)/image1.getHeight());
matrix.postRotate(rotation, image1.getWidth()/2 + x, image1.getHeight()/2 + y);

newwidth和newheight的值无关紧要,因为常量会发生此错误。

2 个答案:

答案 0 :(得分:1)

Bitmap.java的已检查代码 如果image1 widthheight为0,则会发生异常。

UPD。 或矩阵是空的。

https://github.com/android/platform_frameworks_base/blob/master/graphics/java/android/graphics/Bitmap.java#L680

答案 1 :(得分:0)

我无法找出原因。所以,我决定以另一种方式做。我删除了matrix.setScale(),之后又使用了bitmap.createScaledBitmap()