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

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

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

  1. Один вид изображения для отображения выбранной карты.
  2. Hashmap (OR) для обработки растровых изображений. Используйте для получения растрового изображения на основе выбранного пола. Затем установите в ImageView через setImageBitmap (..)
  3. Битмап, назначаемый в Hashmap, загружается при нажатии кнопки «Этаж». Затем создайте растровое изображение, установите для просмотра изображений, а в дальнейшем – в hashmap, щелкнув по другим этажам.

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

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

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

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

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

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

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

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

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

https://stackoverflow.com/a/17068594/1373248

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

 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); 
 Bitmap OLDBitmap = getBitmap(); Bitmap newBmp = Bitmap.createBitmap(OLDBitmap); 

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

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