Android Studio中使用圖片壓縮

android圖片壓縮,大多數文章都是直接調用android自帶的壓縮功能,不能說很差,就是壓縮效率不高。java

若是你要上傳圖片,特別是多張圖片。就會出現上傳圖片比較大的問題。android

網上百度了下找到了2中比較好的壓縮方法。git

第一種:github

Luban多圖片壓縮(他有單圖片和多圖片壓縮功能)ui

https://github.com/shaohui10086/AdvancedLubanthis

開始的時候我沒找到他的多圖片壓縮功能個,只有帶圖片壓縮的API,只有這個地址的提供的是多圖片壓縮spa

可是我沒有驗證,主要是沒有使用。code

第二種:圖片

Compressor圖片壓縮,壓縮功能很不錯,我用5M的圖片壓縮後變成200K,仍是很給力的get

https://github.com/zetbaitsu/Compressor

他的API比較簡單,我來講下個人使用方法:

Compress Image File

compressedImageFile = Compressor.getDefault(this).compressToFile(actualImageFile);

Compress Image File to Bitmap

compressedImageBitmap = Compressor.getDefault(this).compressToBitmap(actualImageFile);

一個是壓縮成File文件,一個是壓縮成Bitmap像素文件。入參要傳入File

/**
     * uri轉file
     */
    public static  File uriToFile(Activity activity,Uri uri){
        if ( null == uri ) return null;
        final String scheme = uri.getScheme();
        String data = null;
        if ( scheme == null )
            data = uri.getPath();
        else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
            data = uri.getPath();
        } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
            Cursor cursor = activity.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );
            if ( null != cursor ) {
                if ( cursor.moveToFirst() ) {
                    int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );
                    if ( index > -1 ) {
                        data = cursor.getString( index );
                    }
                }
                cursor.close();
            }
        }
        File file = new File(data);
        return file;
    }

而後就能夠開啓本身的上傳了。

相關文章
相關標籤/搜索