将可绘制对象资源转换为位图



我试图将可绘制资源转换为位图,但每个代码片段和每次尝试都返回 null 或空字符串。

我尝试了使用Bitmapfactory.decodeResource等基本方法(在这里我尝试了活动上下文,应用程序上下文等以及各种可绘制资源(png,vector,xml(,并且我尝试了转换中的不同代码片段,它总是返回null或"。我也尝试更改可绘制文件夹而不是可绘制文件夹,我尝试了基本的可绘制文件夹。

BitmapFactory.decodeResource(applicationContext.resources,
R.drawable.test) 
BitmapFactory.decodeResource(this.resources,
R.drawable.test) 
BitmapFactory.decodeResource(resources,
R.mipmap.ic_launcher) 

fun drawableToBitmap(drawable: Drawable): Bitmap {
var bitmap: Bitmap? = null
if (drawable is BitmapDrawable) {
if (drawable.bitmap != null) {
return drawable.bitmap
}
}
if (drawable.intrinsicWidth <= 0 || drawable.intrinsicHeight <= 
0) {
bitmap =
Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888) // Single color bitmap will be created of 1x1 pixel
} else {
bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
}
val canvas = Canvas(bitmap!!)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)
return bitmap
}

///

fun drawableToBitmap(drawable: Drawable): Bitmap {
var bitmap: Bitmap? = null
if (drawable is BitmapDrawable) {
val bitmapDrawable = drawable as BitmapDrawable
if (bitmapDrawable.bitmap != null) {
return bitmapDrawable.bitmap
}
}
bitmap = if (drawable.intrinsicWidth <= 0 || 
drawable.intrinsicHeight <= 0) {
Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
} else {
Bitmap.createBitmap(
drawable.intrinsicWidth,
drawable.intrinsicHeight,
Bitmap.Config.ARGB_8888
)
}
val canvas = Canvas(bitmap!!)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)
return bitmap
}

试试这个(上下文是你的活动上下文或其他(

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

最新更新