由于某些原因,我的位图创建无法工作。我发现虫子了吗?当我尝试使用矩阵制作新位图时,它会说我的宽度和高度必须超过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
的校验码如果image1
、width
或height
为0,则发生这些异常。
upd。或者矩阵为空。
https://github.com/android/platform_frameworks_base/blob/master/graphics/java/android/graphics/Bitmap.java#L680
我找不到原因。所以,我决定换一种方式。我去掉了matrix.setScale()
,后来只使用了bitmap.createScaledBitmap()
。