Làm cách nào để cắt hình ảnh hình chữ nhật (600 x 300) từ trái sang phải để vừa với ImageView vuông? Tôi không muốn thay đổi kích thước hình ảnh, tôi chỉ muốn cắt nó, là 300 x 300.Cắt ảnh thành hình vuông - Android
[SOLUTION]
Như @blackbelt nói
Bitmap cropImg = Bitmap.createBitmap(src, startX, startY, dstWidth, dstHeight);
là rất tốt để cắt ảnh. Vì vậy, làm thế nào bạn có thể tự động cắt hình ảnh với kích cỡ khác nhau. Tôi tạo mã đơn giản này cho rằng:
// From drawable
Bitmap src= BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
// From URL
Bitmap src = null;
try {
String URL = "http://www.example.com/image.jpg";
InputStream in = new java.net.URL(URL).openStream();
src = BitmapFactory.decodeStream(in);
} catch (Exception e) {
e.printStackTrace();
}
int width = src.getWidth();
int height = src.getHeight();
int crop = (width - height)/2;
Bitmap cropImg = Bitmap.createBitmap(src, crop, 0, height, height);
ImageView.setImageBitmap(cropImg);
Đây chính là điều tôi đang tìm kiếm, để có được hình ảnh tròn hoàn hảo và không hình bầu dục. Tuy nhiên, nếu chiều cao của hình ảnh lớn hơn chiều rộng, không cắt ở giữa vì giá trị của y param là 0 trong phương thức createBitmap. Đây là cách có thể sửa được: Thêm 2 dòng sau: 'int cropH = (height - width)/2; \t cropH = (cropH <0)? 0: cropH; 'Sử dụng cropH làm giá trị y. \t 'Bitmap cropImg = Bitmap.createBitmap (bitmap, cropW, cropH, newWidth, newHeight);' –
Tốt, tôi thấy điểm của bạn .... Về cơ bản để thực hiện các phép tính tương tự cho cả Chiều rộng và Chiều cao. –