Как я могу вырезать прямоугольное изображение (600 x 300) слева и справа, чтобы вставить квадрат ImageView? Я не хочу, чтобы изменить размер изображения, я просто хочу, чтобы обрезать его, чтобы быть 300 х 300.Обрезать изображение на квадрат - Android
[РЕШЕНИЕ]
Как @blackbelt сказал
Bitmap cropImg = Bitmap.createBitmap(src, startX, startY, dstWidth, dstHeight);
велик для обрезки изображений. Итак, как вы можете автоматически обрезать изображения разных размеров. Я создаю этот простой код для этого:
// 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 param равно 0 в методе createBitmap. Вот как это можно исправить: добавьте эти 2 строки: 'int cropH = (высота - ширина)/2; \t cropH = (cropH <0)? 0: cropH; 'Использовать значение cropH как y. \t 'Bitmap cropImg = Bitmap.createBitmap (bitmap, cropW, cropH, newWidth, newHeight);' –
Приятно, я вижу вашу точку ... В основном, чтобы делать те же вычисления для ширины и высоты. –