483

如何将位图图像转换为 Drawable ?

4

12 回答 12

870

试试这个它将Bitmap类型图像转换为Drawable

Drawable d = new BitmapDrawable(getResources(), bitmap);
于 2010-12-30T07:04:40.700 回答
279

听起来你想使用BitmapDrawable

从文档中:

Drawable包装位图并且可以平铺、拉伸或对齐的A。您可以BitmapDrawable从文件路径、输入流、通过 XML 扩展或从Bitmap 对象创建一个。

于 2010-03-10T11:17:12.223 回答
158

看到大量位图在转换为 a 时缩放不正确的问题BitmapDrawable,一般的转换方法应该是:

Drawable d = new BitmapDrawable(getResources(), bitmap);

如果没有Resources referencebitmap即使正确缩放,也可能无法正确渲染。这里有许多问题,只需使用此方法即可解决,而不是仅使用bitmap参数直接调用。

于 2012-01-31T11:14:09.133 回答
36

官方 Bitmapdrawable文档

这是有关如何将位图转换为可绘制的示例

Bitmap bitmap;  
//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);
于 2014-06-11T11:20:54.263 回答
32

我与上下文一起使用

//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(context.getResources(), bitmap);
于 2016-10-13T00:06:25.800 回答
20

如果你有一个位图图像并且你想在drawable中使用它,比如

Bitmap contact_pic;    //a picture to show in drawable
drawable = new BitmapDrawable(contact_pic); 
于 2012-11-20T06:50:31.830 回答
16

1) 位图到 Drawable :

Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
// mImageView.setDrawable(mDrawable);

2)可绘制到位图:

Bitmap mIcon = BitmapFactory.decodeResource(context.getResources(),R.drawable.icon_resource);
// mImageView.setImageBitmap(mIcon);
于 2019-11-07T08:27:15.157 回答
11

只需这样做:

private void setImg(ImageView mImageView, Bitmap bitmap) {

    Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
    mImageView.setDrawable(mDrawable);
}
于 2015-07-23T16:55:43.303 回答
1

这是另一个:

Drawable drawable = RoundedBitmapDrawableFactory.create(context.getResources(), bitmap);
于 2018-04-09T07:09:36.233 回答
0

使用代码在草图软件应用程序中将位图隐藏为可绘制

    android.graphics.drawable.BitmapDrawable d = new android.graphics.drawable.BitmapDrawable(getResources(), bitmap);
于 2019-05-29T16:35:22.447 回答
0

对于 Kotlin 用户:

Kotlin 具有转换Bitmap为的功能BitmapDrawable

Bitmap.toDrawable(resources)

于 2022-02-10T16:27:25.910 回答
-1

你可以试试这个:

public static Bitmap mirrorBitmap(Bitmap bInput)
    {
        Bitmap  bOutput;
        Matrix matrix = new Matrix();
        matrix.preScale(-1.0f, 1.0f);
        bOutput = Bitmap.createBitmap(bInput, 0, 0, bInput.getWidth(), bInput.getHeight(), matrix, true);
        return bOutput;
    }
于 2021-01-12T10:13:57.757 回答