Как изображение вы видите, мы можем обрезать его, установив отрицательное поле на изображение и overflow:hidden
к его родительскому элементу. Так как я могу сделать с ним в android? Я считаю, что мощный класс Bitmap может обрезать его и создать новое изображение. Есть ли более простой способ, например, сделать разметку или макет ширины?
Здесь есть мое решение: я нашел лучший способ только сейчас и решу большую часть своей проблемы:
imageview.setScaleType(ImageView.ScaleType.CENTER_CROP);
необязательный код (установите немного отрицательного поля (на самом деле заполнение))
imageview.setPadding(-5, -10, -5, -10);
изменит размер изображения в соответствии с его шириной или высотой родителя и автоматически сделает его центром
android:scaleType="centerCrop"
это здорово, но на самом деле это не обрезает изображение. Чтобы правильно обрезать его, вы также должны использовать:
android:cropToPadding="true"
Вы можете обрезать изображение, используя com.android.camera.action.CROP
as
File tempFile = new File("mnt/sdcard/Images/beijingtesttemp.jpeg");//Image path which u want to crop
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(Uri.fromFile(tempFile), "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
intent.putExtra("output", Uri.fromFile(tempFile));
intent.putExtra("outputFormat", "JPEG");
startActivityForResult(intent,PHOTOR);
и в onActivityResult
получают обрезанное изображение, используя data.getExtras()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == NONE)
return;
if (requestCode == PHOTOR) {
Bundle extras = data.getExtras();
if (extras != null) {
// get cropped image as bitmap here
Bitmap photo = extras.getParcelable("data");
}
}
super.onActivityResult(requestCode, resultCode, data);
}