Android 使用createBitmap时出现异常 width and height must be > 0

本文介绍了一种在Android中处理Bitmap缩放时遇到的宽度和高度必须大于0的异常问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常信息:Caused by: java.lang.IllegalArgumentException: width and height must be > 0

异常代码:

Bitmap resizeBitmap(int desHeight, int desWidth, Bitmap originBitmap) {

   int height = originBitmap.getHeight();
   int width = originBitmap.getWidth();
   Log.d("bitmap", "height = " + originBitmap.getHeight() + " width = "
         + originBitmap.getWidth());

   float scale_y = desHeight / height;
   float scale_x = desWidth / width;

   Matrix matrix = new Matrix();
   matrix.setScale(scale_x, scale_y);
   Bitmap desBitmap = Bitmap.createBitmap(originBitmap, 0, 0, width,//此处出现异常
         height, matrix, true);
   Log.d("bitmap", "height = " + desBitmap.getHeight() + " width = "
         + desBitmap.getWidth());
   return desBitmap;
}

解决方案:

  float scale_y = desHeight / height;
  float scale_x = desWidth / width;
  //此处添加代码
  if(height>desHeight && width >desWidth){
     scale_y = height/desHeight;
     scale_x = width/desWidth;
  }


FATAL EXCEPTION: main Process: com.mercusys.halo, PID: 31585 java.lang.IllegalArgumentException: width and height must be > 0 at android.graphics.Bitmap.createBitmap(Bitmap.java:1209) at android.graphics.Bitmap.createBitmap(Bitmap.java:1175) at android.graphics.Bitmap.createBitmap(Bitmap.java:1123) at android.graphics.Bitmap.createBitmap(Bitmap.java:1082) at com.tplink.mercusys.component.onboarding.view.EarthAnimationViewDelegate.initLine(EarthAnimationViewDelegate.kt:102) at com.tplink.mercusys.component.onboarding.view.EarthAnimationViewDelegate.access$initLine(EarthAnimationViewDelegate.kt:23) at com.tplink.mercusys.component.onboarding.view.EarthAnimationViewDelegate$initEarth$$inlined$addListener$default$1.onAnimationEnd(Animator.kt:141) at android.animation.Animator$AnimatorListener.onAnimationEnd(Animator.java:719) at android.animation.Animator$AnimatorCaller$$ExternalSyntheticLambda1.call(Unknown Source:4) at android.animation.Animator.callOnList(Animator.java:677) at android.animation.Animator.notifyListeners(Animator.java:616) at android.animation.Animator.notifyEndListeners(Animator.java:641) at android.animation.ValueAnimator.endAnimation(ValueAnimator.java:1306) at android.animation.ValueAnimator.doAnimationFrame(ValueAnimator.java:1585) at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:328) at android.animation.AnimationHandler.-$$Nest$mdoAnimationFrame(Unknown Source:0) at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:86) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1542) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1553) at android.view.Choreographer.doCallbacks(Choreographer.java:1109) at android.view.Choreographer.doFrame(Choreographer.java:984) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1527) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:257) at android.os.Looper.loop(Looper.java:368) at android.app.ActivityThread.main(ActivityThread.java:8839) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
最新发布
05-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值