说说在 Android 中如何压缩图片
发布日期:2021-06-29 21:11:16
浏览次数:2
分类:技术文章
本文共 1336 字,大约阅读时间需要 4 分钟。
目前存在两种压缩图片方式:
* 质量压缩 - 不改变图片尺寸。 * 按比例压缩 - 相当于是在像素上进行压缩。而图片有三种存在形式:
* file - 磁盘。 * stream - 网络传输、内存。 * bitmap - 内存。bigmap 在内存中的大小是按像素计算的,也就是width * height,所以如果需要在 Android 中显示照片,那么就必须进行按比例压缩,避免因为内存消耗过大,导致 APP 退出。
/** * 按比例压缩 * * @param path 图片路径 * @param width 宽度(像素) * @param height 高度(像素) * @return */ public Bitmap ratioCompress(String path, float width, float height) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565;//一个像素存储两个字节,默认为一个像素存储四个字节 options.inJustDecodeBounds = true;//允许接下来直接得到 Bitmap 对象而不会消耗内存 Bitmap bitmap = BitmapFactory.decodeFile(path, options);//只是空的 Bitmap 对象 int outWidth = options.outWidth; int outHeight = options.outHeight; /** * 计算缩放比 */ int ratio = 1;//缩放比,1 表示不缩放 if (outWidth > outHeight && outWidth > width) { //按照宽度进行缩放 ratio = (int) (outWidth / width); } else if (outWidth < outHeight && outHeight > height) { //按照高度进行缩放 ratio = (int) (outHeight / height); } if (ratio <= 0) { ratio = 1; } options.inSampleSize = ratio;//设置缩放比 options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(path, options);//压缩 }
是不是很简单呀 O(∩_∩)O哈哈~
转载地址:https://deniro.blog.csdn.net/article/details/80464322 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月24日 11时15分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LOJ NOI Round #1,#2 好题怒补
2019-04-30
小胖虎带你了解MySQL 数据库基础
2019-04-30
菜鸟笔记八:内嵌框架属性:iframe
2019-04-30
菜鸟笔记九:video
2019-04-30
vue面试题一
2019-04-30
vue面试题二
2019-04-30
vue面试题四
2019-04-30
菜鸟笔记十:选择器
2019-04-30
菜鸟笔记十一:flex布局
2019-04-30
Mybatis动态sql拼接多个like模糊查询
2019-04-30
mybatisplus的按需自动注入
2019-04-30
LeetCode 19.删除链表的倒数第 N 个结点
2019-04-30
多线程 思维导图
2019-04-30
常用类介绍 思维导图
2019-04-30
Vector子类
2019-04-30
set集合
2019-04-30
HashSet集合
2019-04-30
TreeSet集合
2019-04-30
TreeSet比较器
2019-04-30
集合的迭代输出
2019-04-30