Android 图片压缩、内存计算
来源:互联网 发布:现在做淘宝还能赚钱吗 编辑:程序博客网 时间:2024/04/29 12:06
前言
再平时开发中肯定都会用到图片相关知识,而平时大多都只会关注实现方面,但一些理论对于面试和更深入高级实现就很有用,比如很多第三方组件很多都已经实现,本篇文章先从图片加载内存计算、图片压缩、图片另存、图片一些上传等。
1、图片内存
计算公式如下:
内存=图片长度*宽度*单位像素占用字节数
注:图片长度和图片宽度的单位是像素。
创建一个BitMap时,其单位像素占用的字节数由其参数BitmapFactory.Options的inPreferredConfig变量决定。
inPreferredConfig为Bitmap.Config类型,
Bitmap.Config类是个枚举类型,它可以为以下值
简单点说
图片格式(Bitmap.Config)
占用内存的计算方向
一张100*100的图片占用内存的大小
ALPHA_8
图片长度*图片宽度
100*100=10000字节
ARGB_4444
图片长度*图片宽度*2
100*100*2=20000字节
ARGB_8888
图片长度*图片宽度*4
100*100*4=40000字节
RGB_565
图片长度*图片宽度*2
100*100*2=20000字节
根据加载和未加载得到4579328大小
ViewTreeObserver vto = imageView.getViewTreeObserver();vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth(); Log.i("HU", "width: " + width); Log.i("HU", "height: " + height); Log.i("HU","图片大小 222==width=:"+DeviceInfo.DipToPixels(MainActivity.this,width)+ "====height=="+DeviceInfo.DipToPixels(MainActivity.this,height)); return true; }});得到实际的宽度和高度为:==width=:2346====height==1320
相除得到1.5,这个相对比较真实。
2、图片压缩
图片压缩一般对于面试中经常会提到或者是超大图片如何压缩到自己想要结果,比例又是如何计算出来的,压缩办法又几种,如何防止oom.
/** * 图片压缩 * 质量压缩法 */private void compressImage() { BitmapDrawable bd = (BitmapDrawable) imageView.getDrawable(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bd.getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩 Log.e("HU","compressImage======bitmap=="+baos.size()); baos.reset(); bd.getBitmap().compress(Bitmap.CompressFormat.JPEG, 20, baos);//质量压缩方法,这里100表示不压缩,把压缩 Log.e("HU","compressImage===222===bitmap=="+baos.size());}09-22 16:56:29.621 22421-22421/? E/HU: compressImage======bitmap==187696
09-22 16:56:29.641 22421-22421/? E/HU: compressImage===222===bitmap==16652
100不压缩,按100分制,20就是20%压缩比例。
0 0
- Android 图片压缩、内存计算
- Android关于图片内存计算
- Android关于图片内存计算
- Android图片内存的计算
- Android计算图片占用内存
- Android—压缩图片,减少内存
- Android图片压缩及内存缓存
- android图片压缩之图片和内存基础
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- 18款在线代码片段测试工具
- My Linux Command
- Flatten 2D Vector
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Android 图片压缩、内存计算
- 自定义条形ColorPicker
- Tomcat 配置详解/优化方案
- 建行项目随笔
- [科普]3.5mm耳机国标和美标
- input的radio类型
- CentOS 7 开机加载内核模块
- 复杂链表的复制
- 兼容iOS 10 资料整理笔记