¿Cómo convertir un dibujable en un mapa de bits?

Resuelto Rob asked hace 54 años • 22 respuestas

Me gustaría establecer un Drawablefondo de pantalla determinado como fondo de pantalla del dispositivo, pero todas las funciones de fondo de pantalla Bitmapsolo aceptan s. No puedo usarlo WallpaperManagerporque soy anterior a 2.1.

Además, mis elementos de diseño se descargan de la web y no residen en R.drawable.

Rob avatar Jan 01 '70 08:01 Rob
Aceptado

Este fragmento de código ayuda.

Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
                                           R.drawable.icon_resource);

Aquí una versión donde se descarga la imagen.

String name = c.getString(str_url);
URL url_value = new URL(name);
ImageView profile = (ImageView)v.findViewById(R.id.vdo_icon);
if (profile != null) {
    Bitmap mIcon1 =
        BitmapFactory.decodeStream(url_value.openConnection().getInputStream());
    profile.setImageBitmap(mIcon1);
}
Praveen avatar Jun 14 '2010 08:06 Praveen
public static Bitmap drawableToBitmap (Drawable drawable) {
    Bitmap bitmap = null;

    if (drawable instanceof BitmapDrawable) {
        BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
        if(bitmapDrawable.getBitmap() != null) {
            return bitmapDrawable.getBitmap();
        }
    }

    if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
        bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel
    } else {
        bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    }

    Canvas canvas = new Canvas(bitmap);
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);
    return bitmap;
}
André avatar May 15 '2012 12:05 André

Esto convierte un BitmapDrawable en un mapa de bits.

Drawable d = ImagesArrayList.get(0);  
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
Rob avatar Jun 14 '2010 09:06 Rob