Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android圖片處理,

Android圖片處理,

編輯:關於android開發

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved