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


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.