Хотя большинство из приведенных выше ответов обеспечивают способ сделать это, уже есть встроенный способ сделать это, и это 1 строка кода (ThumbnailUtils.extractThumbnail()
)
int dimension = getSquareCropDimensionForBitmap(bitmap);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension);
...
//I added this method because people keep asking how
//to calculate the dimensions of the bitmap...see comments below
public int getSquareCropDimensionForBitmap(Bitmap bitmap)
{
//use the smallest dimension of the image to crop to
return Math.min(bitmap.getWidth(), bitmap.getHeight());
}
Если вы хотите, чтобы растровый объект был переработан, вы можете передать параметры, которые делают это так:
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
От: ThumbnailUtils Документация
публичная статическая растровая карта extractThumbnail (источник растрового изображения, int width, int
высота)
Добавлено на уровне API 8 Создает центрированное растровое изображение нужного размера.
Параметры исходного исходного растрового изображения Ширина источника целевая ширина
высота намеченная высота
Иногда я получал ошибки памяти при использовании принятого ответа, и использование ThumbnailUtils решало эти проблемы для меня. Кроме того, это намного чище и более пригодно для повторного использования.