วิธีแปลง Bitmap เป็น Drawable ใน Android


447

ฉันจะแปลงอิมเมจบิตแมปเป็น Drawable ได้อย่างไร


2
สวัสดีฉันได้รับคำตอบสำหรับคำถามของคุณตามลิงค์นี้และได้รับคำตอบที่ถูกต้องที่ฉันทำ และฉันประสบความสำเร็จฉันหวังว่าคุณจะประสบความสำเร็จ ขอให้โชคดีที่สุดของandroidsnippets.com/convert-bitmap-to-drawable
Zala Janaksinh

2
การมีส่วนร่วมเป็นวิธีที่ดีในการพูดขอบคุณ ... :) การมีส่วนร่วมในแง่ของการให้คำตอบ ... :)
Farhan

@Farhan k ......
Abhi

คำตอบ:


265

ดูเหมือนว่าคุณต้องการใช้ BitmapDrawable

จากเอกสาร:

A Drawableที่ครอบคลุมบิตแมปและสามารถเรียงต่อกันยืดหรือจัดแนวได้ คุณสามารถสร้างBitmapDrawableจากพา ธ ไฟล์สตรีมอินพุตผ่านการขยาย XML หรือจากBitmap วัตถุ


21
@Deprecated ใช้ BitmapDrawable (Resources, Bitmap) เพื่อให้แน่ใจว่า drawable ได้ตั้งค่าความหนาแน่นของเป้าหมายไว้อย่างถูกต้อง
Camille Sévigny

79
โพสต์ที่ไม่มีประโยชน์ความคิดเห็นที่ไม่มีประโยชน์ จะดีกว่าถ้าคุณเพิ่มรหัส
voghDev

827

ลองนี่มันจะแปลงBitmapภาพประเภทเป็นDrawable

Drawable d = new BitmapDrawable(getResources(), bitmap);

นี่คือสิ่งที่ฉันคาดไว้!
mazend

147

เมื่อพบปัญหาจำนวนมากที่มีการปรับบิตแมปอย่างไม่ถูกต้องเมื่อแปลงเป็น a BitmapDrawableวิธีทั่วไปในการแปลงควรเป็น:

Drawable d = new BitmapDrawable(getResources(), bitmap);

หากไม่มีตัวResources referenceเลือกbitmapอาจไม่สามารถแสดงผลได้อย่างถูกต้องแม้เมื่อปรับขนาดอย่างถูกต้อง มีคำถามมากมายที่นี่ซึ่งจะแก้ไขได้ง่าย ๆ โดยใช้วิธีนี้แทนการโทรหาโดยตรงโดยมีเพียงbitmapอาร์กิวเมนต์


12
อย่างน้อยแสดงความคิดเห็นว่าทำไมถ้าคุณกำลังจะลงคะแนน นี่คือคำตอบที่ถูกต้องสมบูรณ์และนำข้อมูลเพิ่มเติมเพื่อแก้ไขปัญหาที่อาจเกิดขึ้นกับคำตอบอื่น ๆ ที่มีให้ สิ่งที่วาดได้โดยตรงจากบิตแมปมักจะมีข้อผิดพลาดในการปรับขนาดโดยไม่มีการอ้างอิง getResources ()
Zulaxia

4
นี่เป็นคำตอบที่แม่นยำยิ่งขึ้นเมื่อพิจารณาจาก @Manoj
Raykud

35

เอกสาร Bitmapdrawable ที่เป็นทางการ

นี่คือตัวอย่างเกี่ยวกับวิธีการแปลงบิตแมปเป็น drawable

Bitmap bitmap;  
//Convert bitmap to drawable
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);

ขอโทษ ... ฉันไม่จริงจัง
Abhi

5
คุณสามารถ upvoted แทนการเขียนคำตอบเดียวกัน
CopsOnRoad


19

หากคุณมีภาพบิตแมปและคุณต้องการที่จะใช้มันในรูปวาดได้เช่น

Bitmap contact_pic;    //a picture to show in drawable
drawable = new BitmapDrawable(contact_pic); 

20
นั่นเลิกใช้แล้ว ใช้ตัวสร้าง BitmapDrawable (Resources, Bitmap) ทันที
schlingel

1
@schlingel มันยังทำงานได้ดีและพวกเราหลายคนใช้มันในโครงการของเรา
Pir Fahim Shah

2
มันดีสำหรับคุณ แต่ก็ไม่ได้ช่วยอะไรในที่สุดเมื่อ Google สังหาร Constructor นี้และคุณต้องเขียนใหม่ทุกอย่าง
schlingel

@schlingel ใช่ แต่ก็ยังมีบางคนรีบใช้สิ่งนี้และทำให้งาน
Pir Fahim Shah

11

แค่ทำสิ่งนี้:

private void setImg(ImageView mImageView, Bitmap bitmap) {

    Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
    mImageView.setDrawable(mDrawable);
}

1
ไม่ใช่คำตอบสำหรับสิ่งที่เขาขอ
IIRed-DeathII

3

1) บิตแมปถึง Drawable:

Drawable mDrawable = new BitmapDrawable(getResources(), bitmap);
// mImageView.setDrawable(mDrawable);

2) drawable to Bitmap:

Bitmap mIcon = BitmapFactory.decodeResource(context.getResources(),R.drawable.icon_resource);
// mImageView.setImageBitmap(mIcon);


0

แผนที่บิตแอบแฝงเพื่อ drawable ในแอพ Sketchware โดยใช้รหัส

    android.graphics.drawable.BitmapDrawable d = new android.graphics.drawable.BitmapDrawable(getResources(), bitmap);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.