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比較簡單,我來講下個人使用方法:
compressedImageFile = Compressor.getDefault(this).compressToFile(actualImageFile);
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; }
而後就能夠開啓本身的上傳了。