创建位图不起作用



由于某些原因,我的位图创建无法工作。我发现虫子了吗?当我尝试使用矩阵制作新位图时,它会说我的宽度和高度必须超过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的值无关紧要,因为此错误发生在常量中。

Bitmap.java的校验码如果image1widthheight为0,则发生这些异常。

upd。或者矩阵为空。

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

我找不到原因。所以,我决定换一种方式。我去掉了matrix.setScale(),后来只使用了bitmap.createScaledBitmap()

最新更新