日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android三種常見的圖片壓縮方式

瀏覽:27日期:2022-09-18 17:06:37
目錄1、質量壓縮2、按比例壓縮(尺寸壓縮、采樣率壓縮)3、魯班壓縮(推薦)

下面就為大家帶來3種比較常見的壓縮方式

先給出一組數據

原圖:width:2976; height:2976原圖實際:--->byte:2299820 Mb:2.19328質量壓縮 size--->:byte:1599831 kb:1562.33496按比例壓縮 size--->:byte:191707 kb:187.21387魯班壓縮 size--->:byte:143792 kb:140.42188

壓縮效果:魯班壓縮 > 按比例壓縮 > 質量壓縮

1、質量壓縮

public void getBitmap(String imgPath, String outPath) { BitmapFactory.Options newOpts = new BitmapFactory.Options(); newOpts.inJustDecodeBounds = false; newOpts.inPurgeable = true; newOpts.inInputShareable = true; // Do not compress newOpts.inSampleSize = 1; newOpts.inPreferredConfig = Config.RGB_565; storeImage(bitmap, outPath); //保存圖片 }

注意

質量壓縮不會減少圖片的像素,它是在保持像素的前提下改變圖片的位深及透明度等,來達到壓縮圖片的目的,這也是為什么該方法叫質量壓縮方法。所以這種方法,很可能不會減少圖片的大小 如果是bit.compress(CompressFormat.PNG, quality, baos);這樣的png格式,quality就沒有作用了,bytes.length不會變化,因為png圖片是無損的,不能進行壓縮

保存圖片

/** * 把bitmap轉化成圖片存儲在本地 * * @param bitmap * @param outPath 本地的存儲路徑 * @throws FileNotFoundException */ public static boolean storeImage(Bitmap bitmap, String outPath) throws FileNotFoundException {FileOutputStream os = new FileOutputStream(outPath);boolean compressResult = bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);return compressResult; }2、按比例壓縮(尺寸壓縮、采樣率壓縮)

/** * 按比例壓縮 * * @param path 原圖片路徑 * @param targetW 壓縮后寬度 * @param targetH 壓縮后高度 * @return 壓縮后的圖片的保存路徑 */ public static String compressScale(String path,, String outPath, int targetW, int targetH) throws FileNotFoundException {// 獲取option BitmapFactory.Options options = new BitmapFactory.Options();// inJustDecodeBounds設置為true,這樣使用該option decode出來的Bitmap是null, // 只是把長寬存放到option中 options.inJustDecodeBounds = true;// 此時bitmap為null Bitmap bitmap = BitmapFactory.decodeFile(path, options);int inSampleSize = 1; // 1是不縮放 // 計算寬高縮放比例 int inSampleSizeW = options.outWidth / targetW;int inSampleSizeH = options.outHeight / targetH;// 最終取大的那個為縮放比例,這樣才能適配,例如寬縮放3倍才能適配屏幕,而 // 高不縮放就可以,那樣的話如果按高縮放,寬在屏幕內就顯示不下了 if (inSampleSizeW > inSampleSizeH) { inSampleSize = inSampleSizeW;} else { inSampleSize = inSampleSizeH;}// 一定要記得將inJustDecodeBounds設為false,否則Bitmap為null options.inJustDecodeBounds = false;// 設置縮放比例(采樣率) options.inSampleSize = inSampleSize;bitmap = BitmapFactory.decodeFile(path, options);boolean isSuccess = storeImage(bitmap, outPath);if (isSuccess) { return outPath;}return ''; }

這種方法是設置圖片的采樣率,降低圖片像素,通過縮放圖片像素來減少圖片大小。

那么我又是如何來獲取圖片壓縮前后的大小的呢?

注意:這里的圖片的大小是指圖片的實際大小,不是bitmap在內存中所占的大小,看壓縮效果,就得看圖片在文件中所占的大小。

/** * 獲取本地文件大小 * * @param imgPath 圖片的路徑 * @return 圖片實際的大小,單位byte */ public static int getFileSize(String imgPath) {int size = 0;try { FileInputStream fis = new FileInputStream(new File(imgPath)); size = fis.available();} catch (FileNotFoundException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();}return size; }3、魯班壓縮(推薦)

魯班壓縮是根據一種算法得出來的,壓縮效果基本上和微信一致,差不多在200k以內,圖片不失真。

魯班壓縮:https://github.com/Curzibn/Luban

build.gradle添加依賴

compile ’top.zibin:Luban:1.1.3’

private void lunBanPress(String path) {String pressPath = Environment.getExternalStorageDirectory().getPath();Luban.with(this).load(path) // 傳人要壓縮的圖片列表.ignoreBy(100) // 忽略不壓縮圖片的大小.setTargetDir(pressPath)// 設置壓縮后文件存儲位置.setCompressListener(new OnCompressListener() { //設置回調 @Override public void onStart() {// TODO 壓縮開始前調用,可以在方法內啟動 loading UILog.i(TAG, 'onStart:開始魯班壓縮 '); } @Override public void onSuccess(File file) {// TODO 壓縮成功后調用,返回壓縮后的圖片文件Glide.with(activity).load(file).into(iv2);Log.i(TAG, 'onSuccess: 魯班壓縮成功 :');try { int size = new FileInputStream(file).available(); Log.i('tag', '魯班壓縮 size--->:' + 'byte:' + size + ' kb:' + (float) size / 1024);} catch (IOException e) { e.printStackTrace();} } @Override public void onError(Throwable e) {// TODO 當壓縮過程出現問題時調用Log.i(TAG, 'onError: 魯班壓縮出錯'); }}).launch(); //啟動壓縮 }

源碼地址:https://github.com/zhouxu88/ImgCompress

到這里就結束啦~

以上就是Android三種常見的圖片壓縮方式的詳細內容,更多關于Android 圖片壓縮的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产免费av一区二区三区| 一区二区三区视频免费观看| 亚洲一区区二区| 99久久夜色精品国产亚洲1000部 | 亚洲成人二区| 999视频精品| 五月天综合网站| 免费精品视频| 日韩手机在线| 蜜桃视频在线观看一区二区| 久久亚洲电影| 88久久精品| 欧美国产专区| 水蜜桃久久夜色精品一区| 国产v日韩v欧美v| 久久国产电影| 日韩在线观看一区二区| 日韩不卡手机在线v区| 欧美a在线观看| 亚洲精品.com| 视频一区二区欧美| 清纯唯美亚洲综合一区| 国产伊人久久| 国内精品99| 免费在线观看日韩欧美| 国产欧美欧美| 天堂av在线| 蜜臀av一区二区在线免费观看| 国产欧美日韩影院| 日韩欧美字幕| 中文精品电影| 精品国产中文字幕第一页| 日韩高清成人| 在线观看亚洲精品福利片| 国产日产一区| 亚洲不卡系列| 亚洲网址在线观看| 久久久久九九精品影院| 999国产精品永久免费视频app| 欧美日韩激情| 欧美亚洲网站| 日韩综合精品| 日韩av中文字幕一区二区| 亚洲国产福利| 亚洲欧美久久久| 国产精品一区二区三区四区在线观看| 日韩精品电影| 日本中文字幕一区二区| av中文字幕在线观看第一页 | 色一区二区三区| 久久亚洲图片| 国产日韩欧美中文在线| 亚洲先锋成人| 91亚洲精品视频在线观看| 91亚洲国产成人久久精品| 中文一区二区| 国产中文字幕一区二区三区| 亚洲主播在线| 丁香婷婷久久| 综合干狼人综合首页| 福利一区和二区| 亚洲一区二区三区久久久| 国产成人精品免费视| 亚洲最新av| 亚洲无线一线二线三线区别av| 国产精品麻豆成人av电影艾秋| 久久国产欧美| 国产精品宾馆| 亚洲欧美日本国产| 久久精品青草| 老司机精品视频网| 亚洲欧洲美洲国产香蕉| 精品国产18久久久久久二百| 久久午夜精品一区二区| 日韩在线视频精品| 国产经典一区| 亚洲尤物av| 欧美午夜精彩| 福利片在线一区二区| 日本精品国产| 欧美专区一区二区三区| 精品视频在线观看网站| 亚洲精品无吗| 亚洲激情社区| 亚洲电影有码| 国产一区二区三区亚洲综合| 欧美精品中文字幕亚洲专区| 合欧美一区二区三区| 成人在线丰满少妇av| 91亚洲无吗| 亚洲精品第一| 久久亚洲精品伦理| 影音国产精品| 亚洲成av在线| 国产成人久久| 国产精品66| 亚洲日韩视频| 日韩一级欧洲| 999国产精品视频| 国产日韩电影| 成人国产精选| 国产成人在线中文字幕| 国产精品一区二区三区av| 亚洲毛片网站| 久久大逼视频| 亚洲一区二区毛片| 午夜国产一区二区| 伊人精品一区| 亚洲精品一区二区在线看| 久久久久久美女精品| 久久久久久久欧美精品| 国产精品网站在线看| 国产精品亚洲欧美一级在线| 婷婷五月色综合香五月| 综合欧美精品| 亚洲精品乱码久久久久久蜜桃麻豆| 99re国产精品| 国产精品毛片| 首页国产欧美久久| 香蕉久久久久久久av网站| 制服诱惑一区二区| 亚洲欧美激情诱惑| 亚洲丝袜美腿一区| 五月亚洲婷婷 | 久久久久久婷| 国产色播av在线| 亚洲美女久久精品| 另类中文字幕国产精品| 日韩精品网站| 亚洲天堂久久| 丝袜诱惑制服诱惑色一区在线观看| 午夜精品亚洲| 香蕉成人久久| 亚洲人成网77777色在线播放| 亚洲在线免费| 午夜视频一区二区在线观看| 国产欧美日韩精品高清二区综合区| 美女性感视频久久| 91亚洲国产高清| 91九色精品国产一区二区| 国产精品女主播一区二区三区| 免费成人在线影院| 日韩精选在线| 久久精品免费看| 99久久夜色精品国产亚洲狼| 日韩在线a电影| 欧美日韩精品一区二区三区在线观看| 国产精品红桃| 欧洲精品一区二区三区| 久久精品影视| 亚洲最大av| 久久精品国产999大香线蕉| 日本一区二区免费高清| 欧美午夜精品一区二区三区电影| 三级一区在线视频先锋| 欧美天堂在线| 热三久草你在线| 天堂成人免费av电影一区 | 精品久久视频| 免费欧美一区| 欧美亚洲免费| 91精品蜜臀一区二区三区在线| 伊人久久亚洲美女图片| 欧美午夜三级| 久久国产电影| 欧美精品影院| 亚洲高清毛片| 久久国产生活片100| 欧美羞羞视频| 日韩激情精品| 啪啪国产精品| 日本免费一区二区视频| 日韩一区二区三区免费播放| 亚洲日本国产| 欧美天堂视频| 97成人超碰| 国精品一区二区三区| 日本伊人午夜精品| 日韩精品网站| 国产精品亚洲二区| 一区在线免费| 国产一区二区三区天码| 蜜臀久久99精品久久久久宅男| 久草精品视频| 蜜臀av国产精品久久久久| аⅴ资源天堂资源库在线| 综合激情婷婷| 欧美aa在线观看| 欧美专区一区| 欧美高清不卡| 麻豆精品一区二区综合av| 91久久在线| 精品视频自拍| 日韩av网站在线免费观看| 精品一区在线| 国产不卡一区| 奇米狠狠一区二区三区| 蜜臀91精品国产高清在线观看 | 国产精品网站在线看| 亚洲一卡久久|