Подтвердить что ты не робот

Android: Как создать новую копию существующего растрового изображения?

Я создам простой справочник по картам. У меня разные FLOORS и соответствующие MAPS. FLOORS - это кнопки, а MAPS - файлы png, хранящиеся на SD-карте. Когда я нажимаю 1F, и соответствующий 1Fmap будет отображаться, и поэтому с другими этажами.

Я думаю о следующем:

  • одно изображение, чтобы отобразить выбранную карту.
  • Hashmap (OR) для обработки растровых изображений. используйте для получения растрового изображения на основе выбранного пола. затем установите в ImageView через setImageBitmap (..)
  • растровое изображение, которое должно быть назначено в Hashmap, загружается при нажатии кнопки "этаж". затем создайте растровое изображение, установите для просмотра изображений, а позднее - в hashmap, щелкнув по другим этажам.

Вот мои технические/дизайнерские проблемы:

  • как создать копию растрового изображения?
  • нормально ли хранить его в hashmap постепенно или получать его с SD-карты каждый раз, когда нажаты кнопки на полу?
  • если я буду использовать hashmap, нормально ли использовать Integer (номера этажей) или String (floornames) в качестве ключа карты?

UPDATE: Кроме того, я нацелен на максимум 20 этажей (это значит, что файлы размером 20 512x512 png... я тоже думаю, чтобы настроить его на 256x256, как и другие).

4b9b3361

Ответ 1

  • Чтобы создать копию растрового изображения, вы можете использовать:

    Bitmap newBmp = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);

  • Вы можете постепенно получать изображение с SD-карты. НЕТ проблем с этой реализацией.

  • Если вы используете Hashmap, вы можете использовать URL-адрес изображения в качестве ключа для Hashmap.

Ответ 2

Этот ответ помог мне:

fooobar.com/questions/207196/...

Код следующий:

Bitmap bmp1 = BitmapFactory.decodeResource(cont.getResources(), R.drawable.image);
//then create a copy of bitmap bmp1 into bmp2
Bitmap bmp2 = bmp1.copy(bmp1.getConfig(), true);

Ответ 3

Bitmap OLDBitmap = getBitmap();
Bitmap newBmp = Bitmap.createBitmap(OLDBitmap);

Ответ 4

В зависимости от ситуации вы можете использовать:

Bitmap src = ...;
Bitmap dst = src.copy(src.getConfig(), src.isMutable);