HI I´M AN IDEA
WANNA PLAY
WITH ME?
 

Escalar o cambiar tamaño de imágenes en android

Algo muy recurrido en nuestras aplicaciones, ya no android, sino en todos los lenguajes que utilicemos siempre es el escalado de imágenes.

En el día a día de un programador se tratan imágenes de todos los tamaños y tenemos que adaptarlas a nuestras necesidades, esta función para nuestras aplicaciones de android nos va a resolver el día en mas de una ocasión.

public static Drawable resizeImage(Context ctx, int resId, int w, int h) {

          // cargamos la imagen de origen
          Bitmap BitmapOrg = BitmapFactory.decodeResource(ctx.getResources(),
                                                          resId);

          int width = BitmapOrg.getWidth();
          int height = BitmapOrg.getHeight();
          int newWidth = w;
          int newHeight = h;

          // calculamos el escalado de la imagen destino
          float scaleWidth = ((float) newWidth) / width;
          float scaleHeight = ((float) newHeight) / height;

          // para poder manipular la imagen 
          // debemos crear una matriz

          Matrix matrix = new Matrix();
          // resize the Bitmap
          matrix.postScale(scaleWidth, scaleHeight);

          // volvemos a crear la imagen con los nuevos valores
          Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0,
                                                     width, height, matrix, true);

          // si queremos poder mostrar nuestra imagen tenemos que crear un
          // objeto drawable y así asignarlo a un botón, imageview...
          return new BitmapDrawable(resizedBitmap);

        }

About the author

Jaime Mulero Hola! Me llamo Jaime Mulero, soy programador desde hace años, apasionado por la informática prácticamente desde que tengo uso de razón. Jquery Ninja, Codeigniter Trooper, database juggler and Android engineer! Jaime Mulero

VN:F [1.9.20_1166]
Rating: 7.3/10 (11 votes cast)
Escalar o cambiar tamaño de imágenes en android, 7.3 out of 10 based on 11 ratings
Difunde la palabra
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • Meneame

4 Comments on "Escalar o cambiar tamaño de imágenes en android"

  1. Héctor dice:

    Hola Jaime!
    Tengo una duda. Está claro que esto escala las imágenes para visualizarlas. Pero si lo que yo necesito es modificar el tamaño en disco, ¿también lo hará?
    Me explico: el usuario introduce una imagen con mucha resolución (unos 4MB). Yo la escalo para mostrarla, pero además quiero guardarla en un servidor. Si la reduzco a 128 x 128 pixels, por ejemplo, ¿también se reducirá el tamaño en disco para subirla?
    Gracias.

    P.D.: Enhorabuena por tu blog!!

    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
  2. Edu dice:

    Hola Héctor,
    Todo y no estar muy familiarizado con el tema de escalado de imágenes en Android, según tengo entendido al escalar una imagen a una mas pequeña, lo que se hace es la media de un grupo de píxels para luego formar un solo pixel de ese color, si guardas la imagen en 128 x 128 si, la imagen seguramente ocupará mucho menos, pero si inicialmente te ocupa 4 MB no se si te quedará mucha imagen que guardar jeje.

    Respondiendo a tu pregunta si, debería ocupar mucho menos, pero perderás mucha definición.

    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
  3. tendrás algun ejemplo, ya que BitmapDrawable(); está obsoleto, lo que quiero es asignarlo a un ImageView.

    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)
  4. jose dice:

    Excelente aporte! Muchas gracias.

    VA:F [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.20_1166]
    Rating: 0 (from 0 votes)

¿Algo que opinar? Deja tu comentario!