多是Android平臺上最快的圖片壓縮框架

(對不起,標題是騙人的)
emmm...無論怎麼說,我也寫了一個圖片壓縮框架。
在Luban的算法策略上,我豐富了外圍的api,提供更多的可配參數,多線程壓縮和不一樣細粒度的任務控制。java

項目地址

https://github.com/ghnor/Floraandroid

依賴

dependencies {
    ...
    
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.ghnor:flora:1.0.0-alpha1'
}

用法用例

  • 異步壓縮:
Flora.with().load(source...).compress(new Callback<>());
  • 同步壓縮:
Flora.with().load(R.drawable.test2).compressSync();

可控的壓縮任務

Flora.with(Activity)
Flora.with(FragmentActivity)
Flora.with(Fragment)
Flora.with(SupportFragment)
// 上面的四類,會自動在頁面生命週期結束後,終止壓縮任務。

// 經過TAG標誌位來結束一系列的任務。
Flora.with(TAG)
// 強制結束任務。
Flora.cancel(TAG);

// 無參,此時的任務進行實際上是不受控的,強烈建議不要採用這種寫法。
Flora.with()

更多屬性

Flora.with()
        // 配置inSample和quality的算法,內置了一套基於Luban的壓縮算法
        .calculation(new Calculation() {
            @Override
            public int calculateInSampleSize(int srcWidth, int srcHeight) {
                return super.calculateInSampleSize(srcWidth, srcHeight);
            }

            @Override
            public int calculateQuality(int srcWidth, int srcHeight, int targetWidth, int targetHeight) {
                return super.calculateQuality(srcWidth, srcHeight, targetWidth, targetHeight);
            }
        })
        // 對壓縮後的圖片作個性化地處理,如:添加水印
        .addDecoration(new Decoration() {
            @Override
            public Bitmap onDraw(Bitmap bitmap) {
                return super.onDraw(bitmap);
            }
        })
        // 配置Bitmap的色彩格式
        .bitmapConfig(Bitmap.Config.RGB_565)
        // 最大文件尺寸,不建議配置此項,目前採用的方式是重複寫入文件,判斷大小,比較耗時
        .maxFileSize(1.0)
        // 同時可進行的最大壓縮任務數量
        .compressTaskNum(1)
        // 安全內存,設置爲2,表示這次壓縮任務須要的內存小於1/2可用內存才進行壓縮任務
        .safeMemory(2)
        // 壓縮完成的圖片在磁盤的存儲目錄
        .diskDirectory(File)
        .load(source...)
        .compress();

其餘

  • 壓縮速度

自己內部採用線程池的方案去進行壓縮任務,同時進行了必要的內存檢查。git

在不會OOM的前提下,最大的提高了壓縮的速度,常見的9圖大小在20M+可以在2s內處理完成。github

固然,機器性能,系統當時的內存都是對此產生影響,個人測試機是【魅藍Note】...算法

  • 壓縮效果

因爲壓縮策略集成自Luban,因此最後圖片壓縮大小先後對比能夠參考Luban。api

我在此基礎上,對社交產品中常見的長圖的需求進行了必定的優化。安全

相關文章
相關標籤/搜索