Хоча більшість вищезазначених відповідей дають спосіб це зробити, для цього вже є вбудований спосіб, і це 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
загальнодоступний статичний витяг BitmapThumbnail (джерело растрового зображення, int ширина, int висота)
Додано в рівні API 8. Створює централізовану растрову карти потрібного розміру.
Параметри джерела вихідного растрового зображення, ширина джерела, орієнтована ширина, задана висота
Я часом виходив із помилок пам'яті, коли використовував прийняту відповідь, і за допомогою ThumbnailUtils вирішував ці проблеми для мене. Плюс це набагато чистіше і багаторазове використання.