การแปลงอิมเมจทรัพยากร drawable ให้เป็นบิตแมป


172

ฉันพยายามที่จะใช้Notification.Builder.setLargeIcon(bitmap)ภาพบิตแมป ฉันมีภาพที่ฉันต้องการใช้ในโฟลเดอร์ drawable แล้วฉันจะแปลงเป็นบิตแมปได้อย่างไร?

คำตอบ:


406

คุณอาจหมายถึงNotification.Builder.setLargeIcon(Bitmap)ใช่มั้ย :)

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

นี่คือวิธีการที่ดีในการแปลงภาพทรัพยากรเข้าไปใน Android Bitmaps


2
ทำไมไม่กดปุ่ม "แก้ไข" และแก้ไขคำถาม (ข้อเสนอแนะเพิ่มเติมสำหรับอนาคต - ฉันทำไปแล้วสำหรับสิ่งนี้ ... ฉันขอแนะนำให้แก้ไขคำตอบของคุณเพื่อไม่วิพากษ์วิจารณ์ความผิดพลาดของพวกเขาฉันไม่ได้ทำเพื่อคุณ) ในบันทึกอื่น +1 สำหรับการมี คำตอบที่ทำงาน :)
ArtOfWarfare

1
ฉันไม่คิดว่านี่เป็นคำตอบทั่วไป - อย่างน้อยก็ไม่ใช่ตั้งแต่ Android เริ่มให้การสนับสนุนเวกเตอร์ดรอว์เดอร์
roberto tomás

หลังจากการใช้วิธีการที่ฉันได้รับนี้ ...... 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 ไชโย!
portfoliobuilder

น่าเสียดายที่วิธีนี้ทำให้แอปของฉันล่ม!
Fahad Alduraibi

getDrawable เลิกใช้แล้ว
Junior Mayhé

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

ContextActivityสามารถปัจจุบันของคุณ


2
และสำหรับ drawable เวกเตอร์
roberto tomás

9

นี่เป็นอีกวิธีในการแปลงทรัพยากร Drawable ให้เป็นบิตแมปใน Android:

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

2
ความแตกต่างของคุณกับโซลูชั่น AndyW แตกต่างกันอย่างไร? มันเหมือนกัน!
Fahad Alduraibi

6

สร้างภาพบิตแมปเป็นอันดับแรก

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

ตอนนี้ตั้งบิตแมปในไอคอนเครื่องมือสร้างการแจ้งเตือน ....

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ตอนนี้คุณสามารถใช้กับทรัพยากรประชาชน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.