将可绘制资源图像转换为位图

Posted

技术标签:

【中文标题】将可绘制资源图像转换为位图【英文标题】:converting drawable resource image into bitmap 【发布时间】:2012-02-01 19:00:06 【问题描述】:

我正在尝试使用获取位图图像的Notification.Builder.setLargeIcon(bitmap)。我的可绘制文件夹中有我想要使用的图像,那么如何将其转换为位图?

【问题讨论】:

【参考方案1】:

您可能是指Notification.Builder.setLargeIcon(Bitmap),对吧? :)

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
notBuilder.setLargeIcon(largeIcon);

这是将资源图像转换为 android Bitmaps 的好方法。

【讨论】:

为什么不点击“编辑”按钮解决问题? (更多关于未来的建议 - 我已经为这个做了......我建议编辑你的答案,不要批评他们的错别字。我不是为你做的。)另一方面,+1 有一个工作答案:) 我不认为这是正确的作为一个普遍的答案 - 至少自从 Android 开始支持矢量绘图以来不是。 在实施解决方案后我得到了这个...... E/CommitToConfigurationOperation: Malformed snapshot token (size): ... E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE) ... E/NotificationService: WARNING: In a future release this will crash the app:...【参考方案2】:
Drawable myDrawable = getResources().getDrawable(R.drawable.logo);
Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

由于 API 22 getResources().getDrawable() 已弃用,因此我们可以使用以下解决方案。

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();

【讨论】:

它告诉我 bitmapDrawable 无法解析为类型 嗨@20Cents 你试过***.com/questions/18218938/… 如果接收到的无法解析为 bitmapDrawable 的类型,只需按 ctrl+shift+O。干杯! 不幸的是,这种方式让我的应用崩溃了! getDrawable 已弃用【参考方案3】:
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Context 可以是您当前的Activity

【讨论】:

对于矢量绘图?【参考方案4】:

这里是在android中将Drawable资源转换为Bitmap的另一种方法:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

【讨论】:

您的解决方案与 AndyW 解决方案有何不同?是一样的!【参考方案5】:

首先创建位图图像

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

现在在通知生成器图标中设置位图......

Notification.Builder.setLargeIcon(bmp);

【讨论】:

【参考方案6】:

res/drawable 文件夹中,

1.创建一个新的Drawable Resources

2.输入文件名。

将在res/drawable 文件夹中创建一个新文件。

在新创建的文件中替换此代码,并将ic_action_back 替换为您的可绘制文件名。

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_action_back"
    android:tint="@color/color_primary_text" />

现在,您可以将其与资源 ID R.id.filename 一起使用。

【讨论】:

以上是关于将可绘制资源图像转换为位图的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Bitmap::GetHBITMAP 将位图转换为带有 alpha 的 HBITMAP?

将大矢量图像转换为二进制矩阵的快速方法

如何将可绘制背景设置为仅将数字字符串转换为 android 中的另一个字符串?

如何在画布上绘制并转换为位图?

合并/转换textview与/到drawable

如何将可绘制资源中的图像保存到 SD 卡?