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, как и другие).
Ответы
Ответ 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);