在我的android應用程序中,我有一個用ImageViews和textViews填充的列表。 imageViews是從SD卡動態加載的。我的問題是我有更高分辨率的圖像,爲了列表的目的,我需要它們像縮略圖一樣小得多。那麼如何將圖像縮放爲像imageView?爲圖像縮放圖像
Q
爲圖像縮放圖像
0
A
回答
2
我希望下面這段代碼是給你
public static Bitmap resizeImage(Bitmap orignal, int new_width,
int new_height) {
// load the origial BitMap
int width = orignal.getWidth();
int height = orignal.getHeight();
float scaleWidth = ((float) new_width)/width;
float scaleHeight = ((float) new_height)/height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(orignal, 0, 0, width,
height, matrix, true);
return resizedBitmap;
}
0
這裏有用的是規模代碼
private Bitmap decodeFile(File f){
try {
//decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
int scale=1;
//Find the correct scale value. It should be the power of 2.
final int REQUIRED_SIZE=250; // here provide your max size required
int width_tmp=o.outWidth, height_tmp=o.outHeight;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale*=2;
}
//decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
Bitmap bmp = BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
return bmp;
} catch (FileNotFoundException e) {}
return null;
}
0
此代碼可以幫助擴展您的圖像根據您的ImageView
private void scaleImage()
{
// Get the ImageView and its bitmap
ImageView view = (ImageView) findViewById(R.id.image_box);
Drawable drawing = view.getDrawable();
if (drawing == null) {
return; // Checking for null & return, as suggested in comments
}
Bitmap bitmap = ((BitmapDrawable)drawing).getBitmap();
// Get current dimensions AND the desired bounding box
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int bounding = dpToPx(250);
Log.i("Test", "original width = " + Integer.toString(width));
Log.i("Test", "original height = " + Integer.toString(height));
Log.i("Test", "bounding = " + Integer.toString(bounding));
// Determine how much to scale: the dimension requiring less scaling is
// closer to the its side. This way the image always stays inside your
// bounding box AND either x/y axis touches it.
float xScale = ((float) bounding)/width;
float yScale = ((float) bounding)/height;
float scale = (xScale <= yScale) ? xScale : yScale;
Log.i("Test", "xScale = " + Float.toString(xScale));
Log.i("Test", "yScale = " + Float.toString(yScale));
Log.i("Test", "scale = " + Float.toString(scale));
// Create a matrix for the scaling and add the scaling data
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
// Create a new bitmap and convert it to a format understood by the ImageView
Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
width = scaledBitmap.getWidth(); // re-use
height = scaledBitmap.getHeight(); // re-use
BitmapDrawable result = new BitmapDrawable(scaledBitmap);
Log.i("Test", "scaled width = " + Integer.toString(width));
Log.i("Test", "scaled height = " + Integer.toString(height));
// Apply the scaled bitmap
view.setImageDrawable(result);
// Now change ImageView's dimensions to match the scaled image
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
params.width = width;
params.height = height;
view.setLayoutParams(params);
Log.i("Test", "done");
}
private int dpToPx(int dp)
{
float density = getApplicationContext().getResources().getDisplayMetrics().density;
return Math.round((float)dp * density);
}
xml代碼爲ImageView
:
<ImageView a:id="@+id/image_box"
a:background="#ff0000"
a:src="@drawable/star"
a:layout_width="wrap_content"
a:layout_height="wrap_content"
a:layout_marginTop="20dp"
a:layout_gravity="center_horizontal"/>
禮貌:http://www.anddev.org/resize_and_rotate_image_-_example-t621.html
0
您也可以從圖像視圖中使用SETMAX:
imageView.setMaxHeight(myMaxHeight);
imageView.setMaxWidth(myMaxWidth);
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ScaleType.FIT_CENTER);
您還可以使用該
的XML屬性,使用這種方法的問題是你設置的最大尺寸,所以一個較小的圖像將不會填充圖像視圖
相關問題
- 1. 圖像縮放爲UITabBar背景圖像
- 2. 縮放圖像
- 3. 圖像縮放
- 4. jquery縮放圖像與圖像地圖
- 5. 圖像縮放像素化
- 6. 縮放圖像CSS
- 7. 縮放圖像jQuery
- 8. imagecreatefromjpeg()縮放圖像
- 9. 圖像縮放IE8
- 10. NSToolbarItem圖像縮放
- 11. CGAffineTransformMakeRotation縮放圖像
- 12. WPF圖像縮放
- 13. jqgrid圖像縮放
- 14. 圖像縮放+ Modal?
- 15. Bootstrap:Responsively縮放圖像
- 16. 幀圖像縮放
- 17. CollapsingToolbarLayout圖像縮放
- 18. Symfony2:縮放圖像
- 19. C縮放圖像#
- 20. jquery縮放圖像
- 21. Java圖像縮放
- 22. UISegmentedControl圖像縮放
- 23. 縮放圖像javascript
- 24. Pygame - 縮放圖像
- 25. 縮放圖像4
- 26. KineticJS圖像縮放
- 27. Android縮放位圖圖像
- 28. 將圖像縮放爲原圖
- 29. Java高級圖像縮放圖像
- 30. 縮放UI圖像源圖像
thx mate!這正是我所期待的 – Libathos