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


相关推荐: Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何用虚拟主机快速搭建网站?详细步骤解析  Laravel如何保护应用免受CSRF攻击?(原理和示例)  如何在Ubuntu系统下快速搭建WordPress个人网站?  中国移动官方网站首页入口 中国移动官网网页登录  JavaScript如何实现路由_前端路由原理是什么  北京的网站制作公司有哪些,哪个视频网站最好?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  如何在腾讯云服务器快速搭建个人网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  独立制作一个网站多少钱,建立网站需要花多少钱?  java中使用zxing批量生成二维码立牌  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  米侠浏览器网页背景异常怎么办 米侠显示修复  装修招标网站设计制作流程,装修招标流程?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Java类加载基本过程详细介绍  如何在腾讯云服务器上快速搭建个人网站?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  北京企业网站设计制作公司,北京铁路集团官方网站?  如何挑选高效建站主机与优质域名?  如何注册花生壳免费域名并搭建个人网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel如何使用Collections进行数据处理?(实用方法示例)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何用IIS7快速搭建并优化网站站点?  Mybatis 中的insertOrUpdate操作  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  高端建站三要素:定制模板、企业官网与响应式设计优化  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何在阿里云完成域名注册与建站?  详解Android图表 MPAndroidChart折线图  高防服务器租用指南:配置选择与快速部署攻略  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Swift中swift中的switch 语句  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Bootstrap CSS布局之列表  使用Dockerfile构建java web环境