Como pasar de Drawable a Bitmap y descargar imagen de internet a Bitmap

Objetivo:

Pasar de Drawable a Bitmap, o descargar como Bitmap una imagen de internet a través de su url.

Para ello podemos usar las funciones que hay más abajo, llamadas drawableToBitmap(Drawable mDrawable) y urlImageToBitmap(String urlImage), donde el valor devuelto de cada una de las funciones será de la clase Bitmap.

A continuación mostramos la primera función, a la cual le pasamos la instancia del objeto Drawable para que nos devuelva el Bitmap:

Código fuente función (Java):

[sourcecode language=”java”]
/**
* Pasar de Drawable a Bitmap. By TutorialAndroid.com
* @param Drawable mDrawable
* @return Bitmap
*/
public Bitmap drawableToBitmap(Drawable mDrawable){
// Usamos el método decode Resource de BitmapFactory para la conversión
return BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_resource);
}
[/sourcecode]

A continuación mostramos la primera función, a la cual le pasamos la instancia del objeto Drawable para que nos devuelva el Bitmap:

Código fuente función (Java):

[sourcecode language=”java”]
/**
* Descarga una imagen de internet a Bitmap. By TutorialAndroid.com
* @param String urlImage
* @return Bitmap (null en caso de no poder)
*/
public Bitmap urlImageToBitmap(String urlImage){
Bitmap mIcon1 = null;
URL url_value = new URL(urlImage);
if (url_value != null) {
mIcon1 = BitmapFactory.decodeStream(url_value.openConnection().getInputStream());
}
return mIcon1;
}
[/sourcecode]

Una vez hemos obtenido el Bitmap, podemos realizar tareas con él, tal y como cambiar el tamaño (ver aqui).

Espero que os haya servido de ayuda.

¡Un saludo!

Como cambiar de tamaño una imagen (bitmap)

Objetivo:

Cambiar de tamaño una imagen (objeto de la clase Bitmap), para reducirlo o ampliarlo hasta un nuevo tamaño deseado.

Para ello podemos usar la función que hay más abajo, llamada redimensionarImagenMaximo(Bitmap mBitmap, float newWidth, float newHeigth), donde los parámetros serán el Bitmap que deseamos redimensionar, la nueva anchura y la nueva altura.

La función calcula una nueva escala, aplicandolas a una instancia de la clase Matrix, y posteriormente creando de un nuevo Bitmap, que vendrá ya con las nuevas dimensiones.

A continuación mostramos la función, la cual devolverá una nueva instancia de la clase Bitmap, que contendrá nuestra imagen ya redimensionada.

Código fuente función (Java):

[sourcecode language=”java”]
/**
* Redimensionar un Bitmap. By TutorialAndroid.com
* @param Bitmap mBitmap
* @param float newHeight
* @param float newHeight
* @param float newHeight
* @return Bitmap
*/
public Bitmap redimensionarImagenMaximo(Bitmap mBitmap, float newWidth, float newHeigth){
//Redimensionamos
int width = mBitmap.getWidth();
int height = mBitmap.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeigth) / height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
return Bitmap.createBitmap(mBitmap, 0, 0, width, height, matrix, false);
}
[/sourcecode]