編輯:關於android開發
相信做Android開發的小伙伴對於Android圖片壓縮、裁剪一定有很深的印象,今天我將帶領大家一起學習一下這個看著高深莫測的知識,以便再以後的學習、工作中可以幫助到大家。
首先我們看一下這個問題出現的原因,當我們需要在我們的應用中添加大量圖片是,程序往往會報出OMM問題,這是什麼問題呢?是當我們添加的照片過多或過大時,Android就會報出超內存錯誤,往往我們遇到這個問題都很無奈,進行圖片緩存優化可以幫助我們解決這個問題,但是很多時候我們根本不知道,如何進行內存優化,很明顯我就是這樣的一位,這裡我采用了壓縮圖片、裁剪圖片的方式,減少圖片占用的內存,從而使圖片展示流暢。
下面我們先看一下如何進行圖片的裁剪:裁剪圖片有兩種方式,一種調用系統的裁剪方式,這種方式可以方便用戶選擇自己的裁剪區域,很多關於圖片裁剪的視頻,講的就是這一種;第二種是通過後台函數直接進行裁剪,這種方式的好處在於,簡化了用戶的操作,方便快捷。對於第一種,大家可以百度一下,本篇我們一起來探討一下如何通過後台函數實現對圖片的自動裁剪。
File file = new File(fileString);//文件對象;fileString:文件的地址 InputStream is = null; try { is = new FileInputStream(file);//獲得一個文件輸入流對象 } catch (FileNotFoundException e) { e.printStackTrace(); } BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false;//這個參數一定要設置為false;如果將其設為true的話,在decode時將會返回null,通過此設置可以去查詢一個bitmap的屬性,比如bitmap的長與寬,而不占用內存大小 double n = file.length()/1024.0;//獲得文件的大小 if(n<200){ options.inSampleSize = 2;//width,hight設為原來的二分一 }else{ options.inSampleSize = 3;//width,hight設為原來的三分一 } Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
BitmapFactory.decodeStream(is, null, options);根據上面我們設置壓縮比,對圖片進行壓縮處理。
下面我們一起來談談如何進行圖片的裁剪,這裡我介紹的是自定義裁剪,通過我們設置裁剪起點和裁剪長寬值實現對圖片的裁剪。這裡我將以實現一個根據圖片的長寬,取最短邊為邊居中裁剪。
int w = options.outWidth;//得到圖片的寬 int h = options.outHeight;//得到圖片的高 int wh = w > h ? h : w;// 裁切後所取的正方形區域邊長 int retX = w > h ? (w - h) / 2 : 0;//基於原圖,取正方形左上角x坐標 int retY = w > h ? 0 : (h - w) / 2;//基於原圖,取正方形左上角y坐標 Bitmap.createBitmap(bitmap, retX, retY, wh, wh, null, false);
好了關於圖片的壓縮與裁剪就為大家介紹完了,希望對大家有一些幫助吧。ImageView實現適屏和裁剪圖片的功能視頻下載:http://pan.baidu.com/s/1mhkM1s8
Android 面試題及答案(2),android試題及答案1.Activity相關。launchmode,OnSaveInstnceState,生命周期等。  
Android Studio 1.4帶來的福利 前一段時間更新了Android Studio,目前最新的穩定版是1.4。更新之後沒看到什麼大的變化。今天去逛
mitmproxy——中間人攻擊的神器 一、前言 http proxy在web滲透上占據著非常重要的地位,這方面的工具也非常多,像burp suite, Fiddler
【Android性能工具】騰訊開源工具GT(隨身調),androidgt做App測試時監測使用期間的cpu,內存,流量,電量等指標時,發現的企鵝很好用的工具。 備份至此,