Bitmap管理类AndroidUtils【Android】

觉得自我做的到和不做的到,其实只在一念之间。

书客创作

Bitmap是开发当中常常要使用到的,但对于大多数开发者来说,Bitmap的使用起来并不是那么简单。拿Android平台来说,Bitmap的大小不能超过4M,否则就会出现OOM问题,而且Bitmap使用完后要进行及时回收,否则也会出现OOM问题。

Android OOM(内存溢出),产生原因一般情况下:a、加载对象过大。b、响应资源过多,没有来不及释放。

AndroidUtils是最近封装的一个对Bitmap进行压缩,转换,缓存的工具类,这里只是跟大家介绍一下如何使用这个工具类,至于该类是怎么处理的,大家可以自行去gitHub上获取相关源码。

一、引入资源

这里提供两种方式,引入资源文件:

1、通过gradle进行引入:

allprojects {
   repositories {
      maven { url 'https://www.jitpack.io' }
   }
}

dependencies {
   implementation 'com.github.zrunker:AndroidUtils:v1.0'
}

2、通过Maven引入,在pom.xml文件中添加如下代码:

<repositories>
   <repository>
      <id>jitpack.io</id>
      <url>https://jitpack.io</url>
   </repository>
</repositories>
<dependency>
   <groupId>com.github.zrunker</groupId>
   <artifactId>AndroidUtils</artifactId>
   <version>v1.0</version>
</dependency>

二、用法

1、BitmapUtil类-用于转换,压缩,保存Bitmap

/**
 *由图片路径转换成Bitmap
 *@param imgPath图片路径
 *@param bitmapFunConfigBitmapConfig
 */
Bitmap bitmap = BitmapUtil.imgPathToBitmap(String imgPath,BitmapFunConfig bitmapFunConfig);

/**
 *将图片路径转换成流之后转化为Bitmap
 *@param imgPath图片路径
 */
Bitmap bitmap = BitmapUtil.imgPathToBitmap(String imgPath) ;

/**
 *将Bitmap转换成File,写入SD卡
 *@param bitmap Bitmap数据源
 *@param filePath保存SD卡文件路径
 *@param bitmapFunCompressFormat图片格式
 *@return Uri
 */
Uri uri = BitmapUtil.saveBitmapToUri(Bitmap bitmap,String filePath,BitmapFunCompressFormat bitmapFunCompressFormat) ;

/**
 *将Bitmap转换成图片文件,写入SD卡
 *@param bitmap Bitmap数据源
 *@param filePath保存SD卡文件路径
 *@param bitmapFunCompressFormat图片格式
 *@return ImagePath
 */
String imagePath = BitmapUtil.saveBitmapToImgPath(Bitmap bitmap,String filePath,BitmapFunCompressFormat bitmapFunCompressFormat) ;

/**
 *根据图片路径压缩图片并转成Bitmap,宽和高同步递减
 *@param imgPath真实图片路径
 *@param width图片最终宽
 *@param height图片最终高
 */
Bitmap bitmap = BitmapUtil.imgPathToReSizeBitmap(String imgPath, intwidth, intheight);

/**
 *通过uri获取图片并进行比例压缩和进行一次质量压缩,大于1M的时候进行质量压缩
 *@param activity上下文对象
 *@param uri uri数据源
 *@param bitmapFunConfigBitmapConfig
 *@param bitmapFunCompressFormat图片格式
 */
Bitmap bitmap = BitmapUtil.uriToReSizeBitmap(Activity activity,Uri uri,BitmapFunConfig bitmapFunConfig,BitmapFunCompressFormat bitmapFunCompressFormat);

/**
 * Bitmap按照质量来压缩图片,压缩到<=maxSize
 *@param bitmap bitmap数据源
 *@param maxSize最大大小(K)
 *@param bitmapFunCompressFormat图片格式
 */
Bitmap bitmap = BitmapUtil.compressBitmapByQuality(Bitmap bitmap, intmaxSize,BitmapFunCompressFormat bitmapFunCompressFormat);

/**
 * Bitmap图片按比例大小压缩方法
 *@param bitmap Bitmap数据源
 *@param pixelW对比宽
 *@param pixelH对比高
 *@param bitmapFunConfigBitmapConfig
 *@param bitmapFunCompressFormat图片格式
 */
Bitmap bitmap = BitmapUtil.compressBitmapByRatio(Bitmap bitmap, floatpixelW, floatpixelH,BitmapFunConfig bitmapFunConfig,BitmapFunCompressFormat bitmapFunCompressFormat);

2、BitmapCacheUtil类-用于缓存Bitmap

// 初始化缓存类
BitmapCacheUtil bitmapCache = BitmapCacheUtil.getInstance();

/**
 *添加缓存
 *@param key键
 *@param value值
 */
bitmapCache.addBitmapToCache(String key,Bitmap value);

/**
 *更新缓存
 *@param key键
 *@param value值
 */
bitmapCache.updateBitmapToCache(String key,Bitmap value);

/**
 *取出Bitmap
 *@param key键
 */
Bitmap bitmap = bitmapCache.getBitmapFromCache(String key);

/**
 *移除Bitmap
 *@param key键
 */
bitmapCache.removeBitmapFromCache(String key);

/**
 *清空缓存
 */
bitmapCache.clearCache();

最后只需要在相应界面调用这些方法即可,如:

// bitmap方法类BtimapFun
BitmapUtil.imgPathToBitmap("imagePath");
        
// bitmap缓存类BitmapCache
BitmapCacheUtil bitmapCache = BitmapCacheUtil.getInstance();
bitmapCache.removeBitmapFromCache("imagePath");

Github地址
阅读原文

微信公众号:伴职创作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值