преобразование нарисованного изображения ресурса в растровое изображение


172

Я пытаюсь использовать тот, Notification.Builder.setLargeIcon(bitmap)который принимает растровое изображение. У меня есть изображение, которое я хочу использовать в моей папке для рисования, так как мне преобразовать его в растровое изображение?

Ответы:


406

Вы, наверное, имеете в виду Notification.Builder.setLargeIcon(Bitmap), верно? :)

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

Это отличный способ преобразования изображений ресурсов в Android Bitmap.


2
Почему бы не нажать кнопку «Изменить» и исправить вопрос? (Больше предложений на будущее - я уже сделал это для этого ... Я бы предложил отредактировать ваш ответ, чтобы не критиковать их опечаток. Я не делаю это для вас.) С другой стороны, +1 за наличие рабочий ответ :)
ArtOfWarfare

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:...
Bhuro

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

1
Это говорит мне, что bitmapDrawable не может быть разрешен для типа

Здравствуйте, @ 20Cents. Вы пробовали stackoverflow.com/questions/18218938/…
AndyW

Просто нажмите Ctrl + Shift + O, если вы получаете, не может быть преобразован в тип для bitmapDrawable. Ура!
портфолио

К сожалению, таким образом вылетает мое приложение
Фахад Алдураиби

getDrawable устарела
Младший Mayhé

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

Contextможет быть вашим текущим Activity.


2
а для векторных рисунков?
Роберто Томас

9

Вот еще один способ конвертировать Drawable ресурс в растровое изображение в Android:

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

2
Чем ваше решение отличается от решения AndyW? это то же самое!
Фахад Алдураиби

6

Сначала создайте растровое изображение

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

Теперь установите растровое изображение в Notification Builder Icon ....

Notification.Builder.setLargeIcon(bmp);

0

В 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" />

Теперь вы можете использовать его с идентификатором ресурса R.id.filename.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.