Как изменить размер изображения, которое я выбрал из галереи в Android?

Я строю андроид где. Внутри одного действия у меня есть кнопка изображения. Когда я нажимаю на нее, открывается галерея, и я могу выбрать изображение. Затем я установил это изображение в качестве нового изображения для кнопки изображения. Проблема заключается в том, что изображение кажется слишком большим в моей деятельности. Как я могу вставить его в мою кнопку изображения?

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { super.onActivityResult(requestCode, resultCode, imageReturnedIntent); switch(requestCode) { case SELECT_PHOTO: if(resultCode == RESULT_OK){ Uri selectedImage = imageReturnedIntent.getData(); String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String filePath = cursor.getString(columnIndex); cursor.close(); Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath); mImageButton.setImageBitmap(yourSelectedImage); } } } 

Solutions Collecting From Web of "Как изменить размер изображения, которое я выбрал из галереи в Android?"

Вы можете использовать этот метод для получения измененного изображения. Таким образом, вы можете избежать OutOfMemoryError

 public static Bitmap decodeUri(Context c, Uri uri, final int requiredSize) throws FileNotFoundException { BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeStream(c.getContentResolver().openInputStream(uri), null, o); int width_tmp = o.outWidth , height_tmp = o.outHeight; int scale = 1; while(true) { if(width_tmp / 2 < requiredSize || height_tmp / 2 < requiredSize) break; width_tmp /= 2; height_tmp /= 2; scale *= 2; } BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; return BitmapFactory.decodeStream(c.getContentResolver().openInputStream(uri), null, o2); } 

См. Эту ссылку

Используйте: Bitmap.createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)

Или используйте этот метод ::

 public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { int width = bm.getWidth(); int height = bm.getHeight(); float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // create a matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); // recreate the new Bitmap Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false); return resizedBitmap; }