1. 程式人生 > >android 圖片處理(擷取,縮放)

android 圖片處理(擷取,縮放)

有一個任務 顯示一張圖片的中間地方的圖片 
1、 
什麼也不用設 只要固定了imageView的寬和高 就會自動縮放來填充這個imageview 

2、擷取 

一張大圖 我要擷取其中的部分 

Java程式碼  
Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height)  

Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height) 

例如Java程式碼  
Bitmap bitmap = Bitmap.createBitmap(b, 100, 20, 200, 300);  


Bitmap bitmap = Bitmap.createBitmap(b, 100, 20, 200, 300); 

從bitmap物件b的(100,20)開始擷取寬為200,高為300的部分影象 

3、ScaleType 
參考:http://www.cnblogs.com/over140/archive/2010/09/19/1830703.html 
上面那個雖然實現了 但是又重新生成了一張圖片 記憶體開支有點大 我又找了找 可以用這個 
Java程式碼  
iv.setScaleType(ImageView.ScaleType.CENTER);  

iv.setScaleType(ImageView.ScaleType.CENTER); 

android:scaleType 引數如下 


Java程式碼  
matrix   
用矩陣來繪圖   

fitXY   
拉伸圖片(不按比例)以填充View的寬高   
fitStart   
按比例拉伸圖片,拉伸後圖片的高度為View的高度,且顯示在View的左邊   

fitCenter   
按比例拉伸圖片,拉伸後圖片的高度為View的高度,且顯示在View的中間   

fitEnd   
按比例拉伸圖片,拉伸後圖片的高度為View的高度,且顯示在View的右邊   

center   
按原圖大小顯示圖片,但圖片寬高大於View的寬高時,截圖圖片中間部分顯示   

centerCrop   
按比例放大原圖直至等於某邊View的寬高顯示。   
centerInside   

當原圖寬高小於或等於View的寬高時,按原圖大小居中顯示;反之將原圖縮放至View的寬高居中顯示。  

matrix 
用矩陣來繪圖 

fitXY 
拉伸圖片(不按比例)以填充View的寬高 
fitStart 
按比例拉伸圖片,拉伸後圖片的高度為View的高度,且顯示在View的左邊 

fitCenter 
按比例拉伸圖片,拉伸後圖片的高度為View的高度,且顯示在View的中間 

fitEnd 
按比例拉伸圖片,拉伸後圖片的高度為View的高度,且顯示在View的右邊 

center 
按原圖大小顯示圖片,但圖片寬高大於View的寬高時,截圖圖片中間部分顯示 

centerCrop 
按比例放大原圖直至等於某邊View的寬高顯示。 
centerInside 
當原圖寬高小於或等於View的寬高時,按原圖大小居中顯示;反之將原圖縮放至View的寬高居中顯示。 

4、得到縮放後的圖片 

Java程式碼  
Bitmap mBitmap = Bitmap.createScaledBitmap(bmp, mScreenWidth, mScreenHeight, true);    

Bitmap mBitmap = Bitmap.createScaledBitmap(bmp, mScreenWidth, mScreenHeight, true);  

這個方法可以得到自己固定寬和高後的圖片 系統會自動縮放並返回