溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Tiny集成圖片壓縮框架的使用

發(fā)布時間:2020-09-08 11:30:18 來源:腳本之家 閱讀:137 作者:lucktian 欄目:移動開發(fā)

為了簡化對圖片壓縮的調(diào)用,提供最簡潔與合理的api壓縮邏輯,對于壓縮為Bitmap根據(jù)屏幕分辨率動態(tài)適配最佳大小,對于壓縮為File優(yōu)化底層libjpeg的壓縮,整個圖片壓縮過程全在壓縮線程池中異步壓縮,結(jié)束后分發(fā)回UI線程。

支持的壓縮類型

Tiny圖片壓縮框架支持的壓縮數(shù)據(jù)源類型:

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

Tiny支持單個數(shù)據(jù)源壓縮以及批量壓縮,支持的壓縮類型:

1、數(shù)據(jù)源—>壓縮為Bitmap
2、數(shù)據(jù)源—>壓縮為File
3、數(shù)據(jù)源—>壓縮為File并返回壓縮后的Bitmap
4、批量數(shù)據(jù)源—>批量壓縮為Bitmap
5、批量數(shù)據(jù)源—>批量壓縮為File
6、批量數(shù)據(jù)源—>批量壓縮為File并返回壓縮后Bitmap

壓縮參數(shù)

Tiny.BitmapCompressOptions

Bitmap壓縮參數(shù)可配置三個:

1、width
2、height
3、Bitmap.Config

如果不配置,Tiny內(nèi)部會根據(jù)屏幕動態(tài)適配以及默認使用ARGB_8888

Tiny.FileCompressOptions

File壓縮參數(shù)可配置四個:

1、quality-壓縮質(zhì)量,默認為76
2、isKeepSampling-是否保持原數(shù)據(jù)源圖片的寬高
3、fileSize-壓縮后文件大小
4、outfile-壓縮后文件存儲路徑

如果不配置,Tiny內(nèi)部會根據(jù)默認壓縮質(zhì)量進行壓縮,壓縮后文件默認存儲在: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
  }
});

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI