Mặc dù hầu hết các câu trả lời ở trên cung cấp một cách để làm điều này, nhưng đã có một cách tích hợp sẵn để thực hiện điều này và đó là 1 dòng mã ( 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());
}
Nếu bạn muốn đối tượng bitmap được tái chế, bạn có thể vượt qua các tùy chọn khiến nó trở nên như vậy:
bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
Từ: Tài liệu ThumbnailUtils
công khai Bitmap tĩnhThumbnail (nguồn Bitmap, int width, int height)
Đã thêm vào API cấp 8 Tạo một bitmap trung tâm có kích thước mong muốn.
Tham số nguồn gốc bitmap chiều rộng nguồn chiều rộng được nhắm mục tiêu chiều cao chiều cao được nhắm mục tiêu
Đôi khi tôi đã thoát khỏi lỗi bộ nhớ khi sử dụng câu trả lời được chấp nhận và sử dụng ThumbnailUtils đã giải quyết những vấn đề đó cho tôi. Thêm vào đó, điều này là sạch sẽ hơn và tái sử dụng nhiều hơn.