如何在Android中将位图转换为Drawable?


446

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


2
嗨,我得到您的问题的答案,请点击此链接,然后得到正确的答案。我成功了,希望你能成功。好运androidsnippets.com/convert-bitmap-to-drawable
砸落Janaksinh

2
贡献是表达thanx的好方法... :)就给出答案做出贡献... :)
Farhan 2012年

@Farhan k ......。
阿披(Abhi)2016年

Answers:


264

听起来像您想使用 BitmapDrawable

从文档中:

一个Drawable一个包装了位图,可以平铺,拉伸,或对齐。您可以BitmapDrawable从文件路径,输入流,通过XML膨胀或从Bitmap 对象创建。


21
@Deprecated使用BitmapDrawable(Resources,Bitmap)确保可绘制对象已正确设置其目标密度。
卡米尔·塞维尼(CamilleSévigny),2014年

79
无用的帖子,无用的评论。如果您添加一些代码会更好
voghDev 2014年

827

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

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

这是我所期望的!
mazend

147

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

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

如果没有Resources reference,则bitmap可能无法正常正确缩放时渲染,甚至。此处存在许多问题,只需使用此方法即可解决,而不是仅使用bitmap参数直接调用即可解决。


12
至少要评论一下为什么要投反对票。这是一个非常有效的答案,并带来了额外的信息来解决其他提供的答案可能出现的问题。在没有getResources()引用的情况下,直接从位图生成的可绘制对象通常会出现缩放错误。
Zulaxia 2012年

4
考虑到@Manoj中的那个已被弃用,这是一个更准确的答案。
雷库德2012年



19

如果您有位图图像并且想要在可绘制图像中使用它,例如

Bitmap contact_pic;    //a picture to show in drawable
drawable = new BitmapDrawable(contact_pic); 

20
现在已弃用。现在使用BitmapDrawable(Resources,Bitmap)构造函数。
schlingel

1
@schlingel它仍然可以正常工作,我们中的许多人都在项目中使用它
Pir Fahim Shah

2
这对您有好处,但是当Google最终杀死该构造方法而您必须重写所有内容时,这无济于事。
schlingel 2014年

@schlingel是的,但是仍然有人急于使用它,并且使它起作用
Pir Fahim Shah

11

只是这样做:

private void setImg(ImageView mImageView, Bitmap bitmap) {

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

1
不是他要问的解决方案
IIRed-DeathII

2

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


0

使用代码将隐藏位图映射到Sketchware应用中的可绘制对象

    android.graphics.drawable.BitmapDrawable d = new android.graphics.drawable.BitmapDrawable(getResources(), bitmap);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.