У меня есть растровое изображение, взятое из строки Base64 из моей удаленной базы данных ( encodedImage
это строка, представляющая изображение с Base64):
profileImage = (ImageView)findViewById(R.id.profileImage);
byte[] imageAsBytes=null;
try {
imageAsBytes = Base64.decode(encodedImage.getBytes());
} catch (IOException e) {e.printStackTrace();}
profileImage.setImageBitmap(
BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
profileImage - это мой ImageView
Хорошо, но я должен изменить размер этого изображения, прежде чем показывать его на ImageView
моем макете. Я должен изменить его размер до 120x120.
Может кто-нибудь сказать мне код, чтобы изменить его размер?
Приведенные мною примеры не могут быть применены к полученному растровому изображению строки base64.
Ответы:
Изменить:
Для того, чтобы:
источник
РЕДАКТИРОВАТЬ: как предложено @aveschini, я добавил
bm.recycle();
для утечек памяти. Обратите внимание, что в случае, если вы используете предыдущий объект для каких-то других целей, обрабатывайте его соответствующим образом.источник
public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight)
, Я потратил немало времени, чтобы понять это. ; PЕсли у вас уже есть растровое изображение, вы можете использовать следующий код для изменения размера:
источник
Шкала, основанная на соотношении сторон :
Чтобы использовать высоту как базовое значение ширины, измените на:
источник
Масштабируйте растровое изображение с целевым максимальным размером и шириной, сохраняя соотношение сторон:
источник
попробуйте этот код:
Я надеюсь, что это полезно.
источник
Кто-то спросил, как сохранить соотношение сторон в этой ситуации:
Рассчитайте коэффициент, который вы используете для масштабирования и используйте его для обоих измерений. Допустим, вы хотите, чтобы изображение занимало 20% высоты экрана.
для получения разрешения экрана у вас есть следующее решение: получить размеры экрана в пикселях
источник
Попробуйте это: эта функция пропорционально изменяет размер растрового изображения. Когда последний параметр установлен в «X»,
newDimensionXorY
он рассматривается как s новая ширина, а когда в «Y» - новая высота.источник
источник
источник
источник
Начиная с API 19, существуют битовые карты setWidth (int width) и setHeight (int height). http://developer.android.com/reference/android/graphics/Bitmap.html
источник
Изменение размера растрового изображения на основе любого размера дисплея
источник
Хотя принятый ответ является правильным, он не меняет размер
Bitmap
, сохраняя то же соотношение сторон . Если вы ищете метод для изменения размераBitmap
, сохраняя то же соотношение сторон, вы можете использовать следующую служебную функцию. Подробности использования и объяснение функции представлены по этой ссылке .источник
источник
Сохраняя соотношение сторон,
источник