log日志

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference

出错代码

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);

代码很简单,BitmapFactory读取图片到Bitmap,然后转成byte,这也是网上搜索到的最常用的方法,但是运行之后就出现了上面空指针的错误,bitmap为空

在网上找到了这篇文章BitmapFactory.decodeResource为null的处理方法之一,这里所说R.mipmap.ic_launcher是一个vector图片,此代码在4.4上运行正常,但在5.0以上的系统会出现空指针,原因在于此本来方法不能将vector转化为bitmap,而apk编译时为了向下兼容,会根据vector生产相应的png,而4.4的系统运行此代码时其实用的是png资源。这就是为什么5.0以上会报错,而4.4不会的原因

解决办法

private static Bitmap getBitmap(Context context,int vectorDrawableId) {Bitmap bitmap=null;if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP){Drawable vectorDrawable = context.getDrawable(vectorDrawableId);bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());vectorDrawable.draw(canvas);}else {bitmap = BitmapFactory.decodeResource(context.getResources(), vectorDrawableId);}return bitmap;
}

boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.Output相关推荐

  1. android.graphics.bitmap jar,Android入门之画图详解

    前文常用的控件介绍了不少,现在就来讨论一下手机开发中常用到的画图.要掌握Android的画图,首先就要了解一下,基本用到的如下一些图形接口: 1.Bitmap,可以来自资源/文件,也可以在程序中创建, ...

  2. Android之华为手机打开app奔溃提示java.io.FileNotFoundException: res/drawable/abc_vector_test.xml

    1.问题 新建立的项目,华为手机运行起来提示如下 06-24 18:24:03.175 13314 13314 E AndroidRuntime: java.lang.RuntimeException ...

  3. android 请求服务器抛io异常,Android开发中与服务器交互时,遇到java.io.IOException: Target host must not be null的问题...

    当我遇到这个问题的时候,也在网上查找好半天.找到了一个和这个问题很类似的问题--java.lang.IllegalStateException: Target host must not be nul ...

  4. Android异常 NullPointerException: Attempt to invoke virtual method int java.lang.Integer.intValue()

    异常详情 05-23 16:15:41.672 4206 6875 E AndroidRuntime: java.lang.NullPointerException: Attempt to invok ...

  5. Matrix: android 中的Matrix (android.graphics.Matrix) (转)

    本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放.旋转.位移.倾斜等.在最后将以一个简单的Demo来演示图片特效的变换. 1. Matrix概述 对于一个图片变换的处理,需要Ma ...

  6. 【Android】Bitmap图片裁剪(91/100)

    自定义裁剪类CropImageView: package top.lc951.myandroid.views;import android.content.Context; import androi ...

  7. 【Android】Bitmap图像色彩模式:黑白、模糊、老照片、胶卷等(92/100)

    图像转换封装工具类BitmapUtil: /*** 图片位图转换工具** @author lichong* 2022年07月26日15:35:16*/ public class BitmapUtil ...

  8. android 常用Bitmap处理方法收集:普通裁剪,缩放,圆形裁剪

    代码是平常使用时收集的,并不是本人所写.这些bitmap处理方法在我的android程序里面使用相对较多,希望对大家也有些帮助. import android.graphics.Bitmap; imp ...

  9. Android之Bitmap高效缓存以及android缓存策略

    Android之Bitmap高效缓存 一.Bitmap高效加载 1.bitmap的基本概念 位图:获取像素值进行加载. Bitmap是Android系统中图像处理中的最重要的一个类. 通过Bitmap ...

最新文章

  1. 分组加密的常用工作模式(转载)
  2. CTFshow php特性 web147
  3. 06丨MongoDB基本操作
  4. nssl1318-地铁重组【dp】
  5. 云服务器安全组配置(阿里云,ucloud云,华为云)
  6. JS连续赋值与求值顺序
  7. SNMP 简单网络管理协议
  8. 计算机专业术语大全(中~英文版)
  9. LM358运放(比较器、跟随器)输出最高电压问题的探讨
  10. 微信小程序样式-在小程序中创建样式的几种写法
  11. 手把手教你做线性回归分析,实用且通俗易懂!
  12. android开发转盘按钮,Android中的转盘
  13. 阿里 P9 用 500 多页手册完成双十一高并发秒杀系统,绝了
  14. 计算机网络连接显示678是什么意思,宽带连接错误678是什么意思 宽带连接错误678的解决方案...
  15. CSS中z-index:0 与 z-index:auto的区别
  16. PostgreSQL入门之基本工具+常用psql命令+show语法
  17. 程序员只能吃青春饭?3条晋升之路帮你摆脱程序员中年魔咒!
  18. 可调稳压芯片LM317
  19. linux 火车票软件,快订火车票软件下载-快订火车票订购appv3.3.5-Linux公社
  20. R语言 | 认识apply家族

热门文章

  1. 《Adobe Fireworks CS5中文版经典教程》——1.7复习
  2. OATS和配对测试应该如何选择? 如何确定正交选择的强度?
  3. .NET自助建站系统开发框架源码 PC端+WAP端+微信端
  4. AppStore上架过程记录(五)-后记
  5. 吴恩达深度学习第二周+二分类应用+猫图片识别
  6. 解决img标签src路径为本地路径访问受限问题:Not allowed to load local resource
  7. matlab与科学计算 王沫然,MATLAB与科学计算(第3版) 王沫然著 电子工业出版社 9787121180521...
  8. Visual Studio.net 2005 简体中文版[电驴下载]
  9. html中文本属性的设置,css 文本属性direction的功能详解说明
  10. airflow连接mysql错误_airflow使用MySQL数据库(第三方数据库详解)