Android整理好的图片压缩工具类
需积分: 0 144 浏览量
更新于2020-08-26
收藏 63KB PDF 举报
【Android图片压缩】在Android开发中,由于设备内存有限,特别是在处理大图片时,需要进行图片压缩以防止出现内存溢出(Out Of Memory,简称OOM)的问题。Android提供了多种图片压缩策略,包括使用系统自带的缩略图功能以及手动压缩。
### 系统缩略图
1. **使用缩略图(Thumbnails)**:Android系统会自动为检测到的图片生成缩略图,开发者可以通过操作Media内容提供者中的Image来获取这些缩略图,这样在显示时可以有效减少内存消耗。
### 手动压缩
2. **等比压缩**:根据图片和屏幕尺寸,按照比例进行压缩,确保图片在不失真的情况下适应屏幕显示。
3. **质量压缩**:降低图片的质量来减小文件大小,例如将JPEG格式的图片质量设置得更低。
以下是一个简单的图片压缩工具类`ImageCompressUtil`的示例,它包含了通过质量和尺寸压缩图片的方法:
```java
public class ImageCompressUtil {
// 通过质量压缩方法
public static Bitmap compressByQuality(Bitmap bitmap, int maxSize) {
// ...压缩逻辑...
}
// 通过尺寸压缩方法
public static Bitmap compressBySize(String pathName, int maxWidth, int maxHeight) {
// ...压缩逻辑...
}
// 释放Bitmap资源的辅助方法
private static void recycleBitmap(Bitmap bitmap) {
if (bitmap != null && !bitmap.isRecycled()) {
bitmap.recycle();
}
}
}
```
在`compressByQuality`方法中,首先创建一个`ByteArrayOutputStream`,然后通过不断降低图片质量(quality)并压缩到`ByteArrayOutputStream`中,直到图片的大小满足最大值(maxSize)。这种方法虽然可以显著减小图片大小,但可能会导致图片质量下降。
而`compressBySize`方法通常会读取图片文件,然后根据指定的最大宽度和高度进行等比例缩放,以保持图片原始比例,避免拉伸或压缩导致失真。
在实际应用中,应根据需求选择合适的压缩策略。如果对图片质量要求较高,可以优先考虑尺寸压缩;如果内存限制严格,可以先进行尺寸压缩,再根据实际大小判断是否需要进行质量压缩。质量压缩可能导致图片失真,因此一般建议优先保持图片的比例缩放。
在处理大量图片或上传图片至服务器时,合理使用图片压缩技术是优化应用性能、提升用户体验的关键步骤。同时,注意及时回收不再使用的Bitmap对象,以防止内存泄漏。
weixin_38517113
- 粉丝: 3
- 资源: 888
最新资源
- 西电微机原理实验-西安电子科技大学微机原理课程实验概述与指导
- 智慧校园(校园AI 产品) 校园安全 智慧校园 教育数字化 AI校园
- 西电微机原理实验四:8255可编程并行接口的应用
- 基于 Go+Echo 开发的多房间实时通讯系统。详细文档+优秀项目+全部资料.zip
- 基于 Go + Vue 的现代化博客系统详细文档+优秀项目+全部资料.zip
- 基于 go + grpc + consul 的微服务系统详细文档+优秀项目+全部资料.zip
- 基于 golang goframe + vue3 的、前后端分离的后台管理系统快捷使用模板,支持按钮级别的 RBAC。详细文档+优秀项目+全部资料.zip
- 基于 goframe2 和vue3 开发的全栈前后端分离的后台管理系统,详细文档+优秀项目+全部资料.zip
- 基于 Golang 的 容器管理系统 API详细文档+优秀项目+全部资料.zip
- 基于 React 实现的电商后台管理系统的前端项目详细文档+优秀项目+全部资料.zip
- 基于 Golang开发的微服务网关,能够实现高性能 HTTP API 转发、服务编排、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统可以自行扩展详细文档+优秀项目+全部资料.zip
- 基于 Vue + Go 实现客户关系管理系统,,主要功能有仪表盘、客户管理、合同管理、产品管理、配置、订阅等功能详细文档+优秀项目+全部资料.zip
- 基于beego v2.0.1框架和AdminLte前端框架,开发的go语言通用后台系统,详细文档+优秀项目+全部资料.zip
- 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统详细文档+优秀项目+全部资料.zip
- 基于beego的简易blog系统详细文档+优秀项目+全部资料.zip
- 基于Beego开发的可切换模板的 BBS 社交博客系统、它安装简单便捷,页面简介优美。前端是HTML+JS+CSS,不需要掌握一些前端技术栈也能轻松自定义页面。详细文档+优秀项目+全部资料.zip