Cách đặt bitmap từ tài nguyên


278

Điều này có vẻ đơn giản, tôi đang cố gắng thiết lập một hình ảnh bitmap nhưng từ các tài nguyên, tôi có trong ứng dụng trong thư mục drawable.

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

Điều này có đúng không?

Câu trả lời:


755

Giả sử bạn đang gọi nó trong lớp Activity

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

Tham số đầu tiên, Tài nguyên, là bắt buộc. Nó thường có thể đạt được trong bất kỳ Ngữ cảnh nào (và các lớp con như Activity).


1
Tôi đang nhận được giá trị null của bitmap, bạn có thể cho tôi biết lý do tại sao tôi nhận được null không
gautam

vâng, tôi đang nhận được cùng một vấn đề, giá trị null của bitmap.
Er.Rohit Sharma

3
Tôi có vấn đề. Tôi đã cố gắng chuyển đổi vector có thể vẽ thành bitmap. Vì vậy, đây là cod để chuyển đổi vector có thể vẽ thành bitmap.
Er.Rohit Sharma 20/03/18

Nếu không gọi từ một lớp Activity (ví dụ: nếu được gọi từ một lớp dữ liệu), bạn có thể thử: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <nhiệt kế
Bikeboy

36

Thử cái này

Đây là từ sdcard

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

Đây là từ tài nguyên

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

7

Nếu tài nguyên đang hiển thị và là một khung nhìn, bạn cũng có thể chụp nó. Giống như một ảnh chụp màn hình:

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

Điều này thực sự lấy toàn bộ bố cục nhưng bạn có thể thay đổi như bạn muốn.


2

Nếu bạn đã khai báo một đối tượng bitmap và bạn muốn hiển thị nó hoặc lưu trữ đối tượng bitmap này. nhưng trước tiên bạn phải gán bất kỳ hình ảnh nào và bạn có thể sử dụng sự kiện nhấn nút, mã này sẽ chỉ trình bày cách lưu trữ hình ảnh có thể vẽ trong Đối tượng bitmap.

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

Bây giờ bạn có thể sử dụng đối tượng bitmap này, cho dù bạn muốn lưu trữ nó hay sử dụng nó trong google maps trong khi vẽ một bức ảnh trên vĩ độ và kinh độ cố định hoặc sử dụng một số nơi khác


0

chỉ cần thay thế dòng này

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

với

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

Ý tôi là chỉ cần thay đổi giá trị null với getResource () Nếu bạn sử dụng mã này trong bất kỳ nút nào hoặc sự kiện nhấp vào xem hình ảnh, chỉ cần nối thêm getApplicationContext () trước getResource () ..


0

Sử dụng chức năng này, bạn có thể nhận được Bitmap hình ảnh. Chỉ cần vượt qua url hình ảnh

 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;
      }
 }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.