如何将位图图像转换为Drawable?
如何将位图图像转换为Drawable?
尝试这个,它将Bitmap
类型的图像转换为Drawable
类型。
Drawable d = new BitmapDrawable(getResources(), bitmap);
听起来你想使用BitmapDrawable
从文档中可以看到:
BitmapDrawable
是一个可平铺、拉伸或对齐的Drawable
,它包装了一个位图。你可以通过文件路径、输入流、XML膨胀或从Bitmap
对象创建一个BitmapDrawable
。
由于看到许多位图在转换为BitmapDrawable
时缩放不正确的问题,通常的转换方式应该是:
Drawable d = new BitmapDrawable(getResources(), bitmap);
如果没有使用Resources reference
,即使正确缩放,bitmap
也可能无法正常渲染。这里有很多问题可以通过使用此方法而不是仅带有bitmap
参数的直接调用来解决。
官方Bitmapdrawable文档
这是将位图转换为可绘制对象的示例。
Bitmap bitmap;
//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);
我使用了上下文
//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(context.getResources(), bitmap);
1) 将位图转换为可绘制对象(Drawable):
Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
// mImageView.setDrawable(mDrawable);
2) 将drawable转换为Bitmap:
Bitmap mIcon = BitmapFactory.decodeResource(context.getResources(),R.drawable.icon_resource);
// mImageView.setImageBitmap(mIcon);
Bitmap contact_pic; //a picture to show in drawable
drawable = new BitmapDrawable(contact_pic);
只需要这样做:
private void setImg(ImageView mImageView, Bitmap bitmap) {
Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
mImageView.setDrawable(mDrawable);
}
Drawable drawable = RoundedBitmapDrawableFactory.create(context.getResources(), bitmap);
对于Kotlin用户:
Kotlin有一个将Bitmap
转换为BitmapDrawable
的函数:
Bitmap.toDrawable(resources)