리소스에서 비트 맵을 설정하는 방법


279

이것은 간단 해 보입니다. 비트 맵 이미지를 설정하려고하지만 리소스에서 드로어 블 폴더의 응용 프로그램 내에 있습니다.

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

이 올바른지?

답변:


756

Activity 클래스에서 이것을 호출한다고 가정합니다.

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

첫 번째 매개 변수 인 Resources가 필요합니다. 일반적으로 모든 컨텍스트 (및 활동과 같은 하위 클래스)에서 얻을 수 있습니다.


1
내가 널 얻고 왜 비트 맵의 널 (null) 값을 얻고, u는 저를 말할 수있다
— 가우 탐

예, 비트 맵의 ​​null 값과 동일한 문제가 발생합니다.
— Er.Rohit Sharma

3
문제가 있습니다. 벡터 드로어 블을 비트 맵으로 변환하려고했습니다. 여기 벡터 드로어 블을 비트 맵으로 변환하는 코드가 있습니다.
— Er.Rohit Sharma

경우 없는 액티비티 클래스에서 호출 (예를 들어, 데이터 클래스에서 호출하는 경우) 당신은 시도 할 수 : 발 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);

getResources ()로 null 값을 변경한다고 말하면 버튼이나 이미지보기 클릭 이벤트 에서이 코드를 사용하면 getResources () 앞에 getApplicationContext ()를 추가하십시오.


0

이 기능을 사용하면 이미지 비트 맵을 얻을 수 있습니다. 그냥 이미지 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.