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

发布时间 - 2026-01-11 03:22:19    点击率:

为了简化对图片压缩的调用,提供最简洁与合理的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
  }
});

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


# android  # 图片压缩框架  # Android图片压缩  # Android 基于Bitmap的四种图片压缩方式  # Android 高效图片压缩的实现  # Android开发之图片压缩实现方法分析  # Android整理好的图片压缩工具类  # Android LuBan与Compressor图片压缩方式  # android图片压缩工具类分享  # Android开发之图片压缩工具类完整实例  # Android图片压缩的实例详解  # Android图片压缩方法并压缩到指定大小  # Android三种常见的图片压缩方式  # 配以  # 大家多多  # 池中  # 默认为  # 压缩率  # 结束后  # 目录下  # https  # table  # tianyingzhong  # github 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 潮流网站制作头像软件下载,适合母子的网名有哪些?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何在阿里云域名上完成建站全流程?  如何快速搭建FTP站点实现文件共享?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  python中快速进行多个字符替换的方法小结  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel如何实现API资源集合?(Resource Collection教程)  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  海南网站制作公司有哪些,海口网是哪家的?  怎么用AI帮你为初创公司进行市场定位分析?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  高防服务器如何保障网站安全无虞?  如何在景安服务器上快速搭建个人网站?  韩国服务器如何优化跨境访问实现高效连接?  新三国志曹操传主线渭水交兵攻略  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Python制作简易注册登录系统  微信小程序 require机制详解及实例代码  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  南京网站制作费用,南京远驱官方网站?  如何挑选最适合建站的高性能VPS主机?  Laravel storage目录权限问题_Laravel文件写入权限设置  如何在Ubuntu系统下快速搭建WordPress个人网站?  Android仿QQ列表左滑删除操作  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  BootStrap整体框架之基础布局组件  php485函数参数是什么意思_php485各参数详细说明【介绍】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何生成URL和重定向?(路由助手函数)  微信小程序 闭包写法详细介绍  如何快速搭建虚拟主机网站?新手必看指南  WEB开发之注册页面验证码倒计时代码的实现  Linux系统运维自动化项目教程_Ansible批量管理实战  如何快速搭建自助建站会员专属系统?  如何用y主机助手快速搭建网站?  JavaScript如何实现音频处理_Web Audio API如何工作?