วิธีการตั้งค่าบิตแมปจากทรัพยากร


280

ดูเหมือนง่ายฉันกำลังพยายามตั้งค่ารูปบิตแมป แต่จากทรัพยากรฉันมีภายในแอปพลิเคชันในโฟลเดอร์ drawable

bm = BitmapFactory.decodeResource(null, R.id.image);

ถูกต้องหรือไม่

คำตอบ:


757

สมมติว่าคุณกำลังเรียกสิ่งนี้ในคลาสกิจกรรม

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

ต้องระบุพารามิเตอร์แรกคือทรัพยากร โดยทั่วไปจะสามารถใช้ได้ในบริบทใด ๆ (และคลาสย่อยเช่นกิจกรรม)


1
ฉันได้รับค่าโมฆะของบิตแมปคุณสามารถบอกฉันได้ว่าทำไมฉันถึงได้รับโมฆะ
gautam

ใช่ฉันได้รับปัญหาเดียวกันค่า null ของบิตแมป
Er.Rohit Sharma

3
ฉันได้รับปัญหา ฉันพยายามแปลงเวกเตอร์ที่วาดได้เป็นบิตแมป นี่คือโค๊ดที่แปลงเวกเตอร์ drawable เป็นบิตแมป
Er.Rohit Sharma

หากไม่ได้โทรจากคลาสกิจกรรม (เช่นหากถูกเรียกจากคลาสข้อมูล) คุณสามารถลอง: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy

36

ลองสิ่งนี้

นี่คือจาก sdcard

ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/test2.png");
image.setImageBitmap(bMap);

นี่คือจากแหล่งข้อมูล

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

7

หากทรัพยากรกำลังแสดงและเป็นมุมมองคุณสามารถจับภาพได้ เหมือนภาพหน้าจอ:

View rootView = ((View) findViewById(R.id.yourView)).getRootView();
rootView.setDrawingCacheEnabled(true);
rootView.layout(0, 0, rootView.getWidth(), rootView.getHeight());
rootView.buildDrawingCache();

Bitmap bm = Bitmap.createBitmap(rootView.getDrawingCache());

rootView.setDrawingCacheEnabled(false);

นี่เป็นการดึงเค้าโครงทั้งหมด แต่คุณสามารถเปลี่ยนแปลงได้ตามที่คุณต้องการ


2

ถ้าคุณประกาศวัตถุบิตแมปและคุณต้องการแสดงหรือเก็บวัตถุบิตแมปนี้ แต่ก่อนอื่นคุณต้องกำหนดภาพใด ๆ และคุณสามารถใช้ปุ่มคลิกเหตุการณ์รหัสนี้จะแสดงให้เห็นว่าวิธีการเก็บภาพที่วาดได้ในวัตถุบิตแมป

Bitmap contact_pic = BitmapFactory.decodeResource(
                           v.getContext().getResources(),
                           R.drawable.android_logo
                     );

ตอนนี้คุณสามารถใช้วัตถุบิตแมปนี้ไม่ว่าคุณต้องการเก็บไว้หรือใช้ในแผนที่ Google ในขณะที่วาดรูปบนละติจูดและลองจิจูดคงที่หรือใช้ที่อื่น


0

เพียงแค่แทนที่สายนี้

bm = BitmapFactory.decodeResource(null, R.id.image);

กับ

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.YourImageName);

ฉันหมายถึงว่าเพียงแค่เปลี่ยนค่า Null ด้วย getResources () ถ้าคุณใช้รหัสนี้ในปุ่มใด ๆ หรือคลิกดูภาพเหตุการณ์เพียงแค่ผนวก getApplicationContext () ก่อน getResources () ..


0

เมื่อใช้ฟังก์ชั่นนี้คุณจะได้รับ Image Bitmap เพียงส่ง URL ของภาพ

 public Bitmap getBitmapFromURL(String strURL) {
      try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
      } catch (IOException e) {
        e.printStackTrace();
        return null;
      }
 }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.