我正在开发一个应用程序,从图库中选择图像的颜色代码。该应用程序崩溃错误: java.lang.IllegalArgumentException:width和height必须是> 0
崩溃来自方法的这一部分:
int i = paramBitmap.getWidth();
int j = paramBitmap.getHeight();
float f1 = paramInt2 / i;
float f2 = paramInt1 / j;
Matrix localMatrix = new Matrix();
if (i > j) {
localMatrix.postRotate(90.0F);
}
f1 = Math.min(paramInt2/i, paramInt1/j);
f2 = Math.min(paramInt1/i, paramInt2/j);
localMatrix.postScale(f1, f2);
return Bitmap.createBitmap(paramBitmap, 0, 0, i, j, localMatrix, true); // Crashes here
崩溃的原因是什么?请提供宝贵的意见。
答案 0 :(得分:1)
<强>问题:强>
float f1 = newHeight / i;
float f2 = newWidth / j;
int newWidth
和newHeight
的精度小于float
所以当你计算它时,它会返回0.所以不要让parameter int
改为parameter float
计算浮点数而不是整数。
<强>样品强>
private Bitmap getResizedBitmap(Bitmap bm, float newHeight, float newWidth)
{
int i = bm.getWidth();
int j = bm.getHeight();
float f1 = newHeight / i;
float f2 = newWidth / j;
Matrix localMatrix = new Matrix();
if (i > j) {
localMatrix.postRotate(90.0F);
}
f1 = Math.min(newHeight/i, newWidth/j);
f2 = Math.min(newHeight/i, newWidth/j);
localMatrix.postScale(f1, f2);
return Bitmap.createBitmap(bm, 0, 0, i, j, localMatrix, true); // Crashes here
}
答案 1 :(得分:0)
不是x必须&lt; bitmap.width()。它说x + width必须是&lt; = bitmap.width()