android 圖片處理(擷取,縮放)
阿新 • • 發佈:2019-01-06
有一個任務 顯示一張圖片的中間地方的圖片
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);
這個方法可以得到自己固定寬和高後的圖片 系統會自動縮放並返回
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);
這個方法可以得到自己固定寬和高後的圖片 系統會自動縮放並返回