Android Tiny集成图片压缩框架的使用

 更新时间:2017年09月22日 10:03:00   作者:lucktian  
本篇文章主要介绍了Android Tiny集成图片压缩框架的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

为了简化对图片压缩的调用,提供最简洁与合理的api压缩逻辑,对于压缩为Bitmap根据屏幕分辨率动态适配最佳大小,对于压缩为File优化底层libjpeg的压缩,整个图片压缩过程全在压缩线程池中异步压缩,结束后分发回UI线程。

支持的压缩类型

Tiny图片压缩框架支持的压缩数据源类型:

1、Bytes
2、File
3、Bitmap
4、Stream
5、Resource
6、Uri(network、file、content)

Tiny支持单个数据源压缩以及批量压缩,支持的压缩类型:

1、数据源—>压缩为Bitmap
2、数据源—>压缩为File
3、数据源—>压缩为File并返回压缩后的Bitmap
4、批量数据源—>批量压缩为Bitmap
5、批量数据源—>批量压缩为File
6、批量数据源—>批量压缩为File并返回压缩后Bitmap

压缩参数

Tiny.BitmapCompressOptions

Bitmap压缩参数可配置三个:

1、width
2、height
3、Bitmap.Config

如果不配置,Tiny内部会根据屏幕动态适配以及默认使用ARGB_8888

Tiny.FileCompressOptions

File压缩参数可配置四个:

1、quality-压缩质量,默认为76
2、isKeepSampling-是否保持原数据源图片的宽高
3、fileSize-压缩后文件大小
4、outfile-压缩后文件存储路径

如果不配置,Tiny内部会根据默认压缩质量进行压缩,压缩后文件默认存储在:ExternalStorage/Android/data/${packageName}/tiny/目录下

Tiny项目地址: https://github.com/tianyingzhong/Tiny

Tiny与微信朋友圈的压缩率比较

下面是使用Tiny图片压缩库进行压缩的效果对比示例:

图片信息 Tiny Wechat
6.66MB (3500x2156) 151KB (1280x788) 135KB (1280x789)
4.28MB (4160x3120) 219KB (1280x960) 195KB (1280x960)
2.60MB (4032x3024) 193KB (1280x960)) 173KB (1280x960)
372KB (500x500) 38.67KB (500x500) 34.05KB (500x500)
236KB (960x1280) 127KB (960x1280) 118KB (960x1280)

压缩为Bitmap

Tiny.BitmapCompressOptions options = new Tiny.BitmapCompressOptions();
Tiny.getInstance().source("").asBitmap().withOptions(options).compress(new BitmapCallback() {
  @Override
  public void callback(boolean isSuccess, Bitmap bitmap) {
    //return the compressed bitmap object
  }
});

压缩为File 

 Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
Tiny.getInstance().source("").asFile().withOptions(options).compress(new FileCallback() {
  @Override
  public void callback(boolean isSuccess, String outfile) {
    //return the compressed file path
  }
});

压缩为File并返回Bitmap

 Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
Tiny.getInstance().source("").asFile().withOptions(options).compress(new FileWithBitmapCallback() {
  @Override
  public void callback(boolean isSuccess, Bitmap bitmap, String outfile) {
    //return the compressed file path and bitmap object
  }
});

批量压缩为Bitmap

 Tiny.BitmapCompressOptions options = new Tiny.BitmapCompressOptions();
Tiny.getInstance().source("").batchAsBitmap().withOptions(options).batchCompress(new BitmapBatchCallback() {
  @Override
  public void callback(boolean isSuccess, Bitmap[] bitmaps) {
    //return the batch compressed bitmap object
  }
});

批量压缩为File

 Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
Tiny.getInstance().source("").batchAsFile().withOptions(options).batchCompress(new FileBatchCallback() {
  @Override
  public void callback(boolean isSuccess, String[] outfile) {
    //return the batch compressed file path
  }
});

批量压缩为File并返回Bitmap

 Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
Tiny.getInstance().source("").batchAsFile().withOptions(options).batchCompress(new FileWithBitmapBatchCallback() {
  @Override
  public void callback(boolean isSuccess, Bitmap[] bitmaps, String[] outfile) {
    //return the batch compressed file path and bitmap object
  }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Jetpack Compose 双指拖拽实现详解

    Jetpack Compose 双指拖拽实现详解

    这篇文章主要为大家介绍了Jetpack Compose 双指拖拽实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 扫二维码下载apk并统计被扫描次数

    扫二维码下载apk并统计被扫描次数

    本文主要对实现用户扫描一个二维码就能下载APP,并统计被扫描次数的方法进行详细介绍,具有一定的参考作用,下面跟着小编一起来看下吧
    2017-01-01
  • RxJava2.x实现定时器的实例代码

    RxJava2.x实现定时器的实例代码

    本篇文章主要介绍了RxJava2.x实现定时器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Android Handler多线程详解

    Android Handler多线程详解

    本文主要介绍Android Handler的知识,这里整理了详细的资料及简单示例代码和实现效果图,有兴趣的小伙伴可以参考下
    2016-09-09
  • Android实现九宫格解锁

    Android实现九宫格解锁

    根据最近Android项目需要,实现九宫格解锁效果,下面小编给大家分享了具体实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Android 中Notification弹出通知实现代码

    Android 中Notification弹出通知实现代码

    NotificationManager 是状态栏通知的管理类,负责发通知、清除通知等操作。接下来通过本文给大家介绍Android 中Notification弹出通知实现代码,需要的的朋友参考下吧
    2017-08-08
  • 实例讲解Android中SQLiteDatabase使用方法

    实例讲解Android中SQLiteDatabase使用方法

    这篇文章主要以一个简单的实例为大家详细讲解Android中SQLiteDatabase使用方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android动画之逐帧动画(Frame Animation)实例详解

    Android动画之逐帧动画(Frame Animation)实例详解

    这篇文章主要介绍了Android动画之逐帧动画(Frame Animation),结合实例形式较为详细的分析了逐帧动画的原理,注意事项与相关使用技巧,需要的朋友可以参考下
    2016-01-01
  • UIImage初始化的区别两种方法介绍(面试常见)

    UIImage初始化的区别两种方法介绍(面试常见)

    本文通过两种方法给大家介绍UIImage初始化的区别,在面试过程中经常遇到,对uiimage初始化相关知识感兴趣的朋友一起了解下吧
    2016-05-05
  • Android自定义View绘制居中文本

    Android自定义View绘制居中文本

    这篇文章主要为大家详细介绍了Android自定义View绘制居中文本,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论