You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android调用createScaledBitmap()方法出现致命空指针错误求助

解决Bitmap.createScaledBitmap空指针问题

兄弟,我一看这个错误就明白症结所在了——你调用Bitmap.createScaledBitmap()的时候,前面BitmapFactory.decodeResource()返回的是null!虽然你没直接写getWidth(),但createScaledBitmap内部会自动去获取原Bitmap的宽高参数,原Bitmap是null的话,自然就触发空指针异常了。

下面给你一步步排查和解决的方案:

  • 先确认资源ID和文件是否匹配
    你用的R.mipmap.ic_launcher,先检查这几点:

    • 看看res/mipmap文件夹下有没有对应的图标文件(不管是png/svg还是xml矢量图)
    • 有没有手滑打错资源名?比如多写了字母、大小写搞错了?
    • 试试清理项目缓存再重新编译,有时候编译缓存会导致资源ID失效。
  • 确保你的Context是有效的
    你传的context.getResources(),要保证这个context不是null,也不是已经被销毁的状态(比如Activity已经finish了还在调用)。可以提前加个判断:

    if (context == null || context.isDestroyed()) {
        // 上下文无效,直接返回或者做降级处理
        return;
    }
    
  • 添加null判断,提前拦截崩溃
    在调用缩放方法前,先判断解码出来的Bitmap是不是null,这样能避免崩溃还能定位问题:

    Bitmap originalBitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);
    if (originalBitmap == null) {
        // 资源加载失败,这里可以打日志提示,或者用默认图替代
        Log.e("BitmapLoad", "Failed to load ic_launcher resource");
        return;
    }
    Bitmap android_guy = Bitmap.createScaledBitmap(originalBitmap, 50, 50, true);
    // 别忘了回收原Bitmap,避免内存浪费
    originalBitmap.recycle();
    
  • 检查资源文件本身是否正常
    有时候图片文件损坏、格式不支持,或者放错了资源目录(比如把mipmap的图放到drawable里),也会导致解码失败。可以换一张确定能用的图片测试,或者重新导入一遍资源文件。

内容的提问来源于stack exchange,提问作者Fahad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:46:16