Как установить растровое изображение из ресурса


280

Это кажется простым, я пытаюсь установить растровое изображение, но из ресурсов, которые есть в приложении в папке drawable.

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

Это верно?

Ответы:


757

Предполагая, что вы вызываете это в классе Activity

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

Первый параметр, ресурсы, является обязательным. Обычно он доступен в любом контексте (и подклассах, таких как активность).


1
Я получаю нулевое значение из растрового изображения, может у меня сказать , почему я получаю нулевой
Гаутам

да, я получаю ту же проблему, нулевое значение растрового изображения.
Er.Rohit Sharma

3
Я получил вопрос. Я пытался преобразовать векторное изображение в растровое. Итак, вот код для преобразования векторной графики в растровое.
Эр. Рохит Шарма

Если вы не вызываете из класса Activity (например, если он вызывается из класса данных), вы можете попробовать: 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);

Я имею в виду просто изменить нулевое значение с помощью getResources (). Если вы используете этот код в любой кнопке или событии щелчка при просмотре изображений, просто добавьте getApplicationContext () перед getResources ().


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;
      }
 }
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.