¿Cómo escalar el bitmap al tamaño de la pantalla?

¿Quiero saber cómo escalar el bitmap a la altura y el ancho de la pantalla?

¿Alguien puede decirme cómo hacer esto?

Gracias Monali

Intenta esto para decodificar el bitmap:

Donde imagefilepath es el nombre de la ruta de acceso de la imagen, estará en Cadena secreta que en File usando

File photos= new File(imageFilePath); 

Donde foto es el nombre de archivo de la imagen , ahora establece su altura y ancho según sus requisitos.

 public void main(){ Bitmap bitmap = decodeFile(photo); bitmap = Bitmap.createScaledBitmap(bitmap,150, 150, true); imageView.setImageBitmap(bitmap); } 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); //Find the correct scale value. It should be the power of 2. final int REQUIRED_SIZE=70; int width_tmp=o.outWidth, height_tmp=o.outHeight; int scale=1; while(true){ if(width_tmp/2 

Tuve un desafío similar en el que quería extender el ancho al 100% de la pantalla, pero mantener intacta la relación ancho / alto. Así que hice esto …

Cree una clase ScalableImageView que amplíe ImageView:

 public class ScalableImageView extends ImageView { public boolean isMeasured = true; public ScalableImageView(Context context) { super(context); } public ScalableImageView(Context context, AttributeSet attrs) { super(context, attrs); } public ScalableImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { try { Drawable drawable = getDrawable(); if (drawable == null) { setMeasuredDimension(0, 0); } else { int width = MeasureSpec.getSize(widthMeasureSpec); int height = width * drawable.getIntrinsicHeight() / drawable.getIntrinsicWidth(); setMeasuredDimension(width, height); } } catch (Exception e) { isMeasured = false; super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } } 

En el archivo XML de diseño, tengo un marcador de posición para la imagen definida así:

   

Y luego cargarlo / configurarlo así:

 ScalableImageView imgView = null; imgView = (ScalableImageView)findViewById(imgViewResource); imgView.setImageDrawable(myDrawable); imgView.setVisibility(ScalableImageView.VISIBLE); 

Puede usar Bitmap.createScaledBitmap() , pero asegúrese de usar la fórmula de conversión correcta cuando la use:

 final float scale = getContext().getResources().getDisplayMetrics().density; int pixels = (int) (dps * scale + 0.5f); 

En Bitmap.createScaledBitmap() las unidades para el ancho y alto son “píxeles”, mientras que siempre debe establecer su tamaño en píxeles independientes de la densidad (unidades dp) como se describe aquí .

Por lo tanto, si desea mostrar sus imágenes manteniendo la independencia de densidad, es decir, sus imágenes ocuparán la misma porción de pantalla en cualquier dispositivo, debe usar un código similar al siguiente:

 Bitmap b = decodeScaledFile(f); final float scale = mContext.getResources().getDisplayMetrics().density; int p = (int) (SIZE_DP * scale + 0.5f); Bitmap b2 = Bitmap.createScaledBitmap(b, p, p, true); 

primero obtenga la altura y el ancho de la pantalla:
Android: Cómo obtener las dimensiones de la pantalla 1 : Obtenga las dimensiones de la pantalla en píxeles y luego
Echa un vistazo a esto: Cambiar el tamaño de un bitmap

Puede crear un bitmap escalado basado en este código.

 private Bitmap getScaledBitMapBaseOnScreenSize(Bitmap bitmapOriginal){ Bitmap scaledBitmap=null; try { DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); int width = bitmapOriginal.getWidth(); int height = bitmapOriginal.getHeight(); float scaleWidth = metrics.scaledDensity; float scaleHeight = metrics.scaledDensity; // create a matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); // recreate the new Bitmap scaledBitmap = Bitmap.createBitmap(bitmapOriginal, 0, 0, width, height, matrix, true); } catch (Exception e){ e.printStackTrace(); } return scaledBitmap; } 

Método de invocación y configuración de la imagen escalada en imageview

  Bitmap scaleBitmap=getScaledBitMapBaseOnScreenSize(originalBitmapImage); if(scaleBitmap!=null) { imageView.setImageBitmap(scaleBitmap); } 

Mi código xml para imageview,