Question Comment convertir un Drawable en Bitmap?


Je voudrais définir un certain Drawable comme fond d'écran de l'appareil, mais toutes les fonctions de papier peint acceptent Bitmaps seulement. Je ne peux pas utiliser WallpaperManager parce que je suis pré 2.1.

De plus, mes drawables sont téléchargés sur le Web et ne résident pas dans R.drawable.


795
2018-06-14 07:46


origine


Réponses:


Ce morceau de code aide.

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

Voici une version où l'image est téléchargée.

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);
}

1134
2018-06-14 08:32



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;
}

650
2018-05-15 12:33



Cela convertit un bitmapDrawable en bitmap.

Drawable d = ImagesArrayList.get(0);  
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();

195
2018-06-14 09:33



UNE Drawable peut être tiré sur un Canvaset un Canvas peut être soutenu par un Bitmap:

(Mise à jour pour gérer une conversion rapide pour BitmapDrawables et de faire en sorte que Bitmap créé a une taille valide)

public static Bitmap drawableToBitmap (Drawable drawable) {
    if (drawable instanceof BitmapDrawable) {
        return ((BitmapDrawable)drawable).getBitmap();
    }

    int width = drawable.getIntrinsicWidth();
    width = width > 0 ? width : 1;
    int height = drawable.getIntrinsicHeight();
    height = height > 0 ? height : 1;

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap); 
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);

    return bitmap;
}

126
2018-02-22 07:35



Utilisez ce code:

Bitmap bitmap= BitmapFactory.decodeResource(context.getResources(), 
    R.drawable.icon_name);

69
2017-11-20 18:58



très simple

Bitmap tempBMP = BitmapFactory.decodeResource(getResources(),R.drawable.image);

31
2018-03-21 18:21



METHODE 1 : Soit vous pouvez convertir directement en bitmap comme celui-ci

Bitmap myLogo = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

METHODE 2 : Vous pouvez même convertir la ressource dans le drawable et à partir de cela, vous pouvez obtenir bitmap comme celui-ci

Bitmap myLogo = ((BitmapDrawable)getResources().getDrawable(R.drawable.logo)).getBitmap();

Pour API> 22 getDrawable méthode déplacée à la ResourcesCompat classe donc pour que vous faites quelque chose comme ça

Bitmap myLogo = ((BitmapDrawable) ResourcesCompat.getDrawable(context.getResources(), R.drawable.logo, null)).getBitmap();

13
2018-02-02 05:22



Peut-être que cela aidera quelqu'un ...

De PictureDrawable à Bitmap, utilisez:

private Bitmap pictureDrawableToBitmap(PictureDrawable pictureDrawable){ 
    Bitmap bmp = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888); 
    Canvas canvas = new Canvas(bmp); 
    canvas.drawPicture(pictureDrawable.getPicture()); 
    return bmp; 
}

... mis en œuvre en tant que tel:

Bitmap bmp = pictureDrawableToBitmap((PictureDrawable) drawable);

12
2018-02-08 19:08