Обрезать изображение в андроиде
Я хочу сделать обрезку изображения, и нашел некоторые довольно полезные, но как-то похоже на отсутствие темных областей, которые не выбраны, поэтому мне интересно, кто-нибудь знает, как это сделать? или привести меня в правильное направление? В онлайн-учебнике, который я нашел, показано, что будет затемнять выбранную область, но когда я его использую, это не будет. Пожалуйста, помогите мне поблагодарить много и извините за мою неудачную команду по английскому языку.
Ссылки на учебник, который я использую.
Учебное пособие по обрезанию 1
Crop Image tutorial 2
Я хочу, чтобы это было что-то вроде этого.
![I want it be something like this]()
editButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent goEdit;
goEdit = new Intent(PreviewActivity.this, CropImage.class);
goEdit.putExtra("image-path", path);
goEdit.putExtra("scale", true);
goEdit.putExtra("fileName", nameFromPath);
//finish();
checkEdit = true;
startActivityForResult(goEdit,0);
}
});
ИЗМЕНИТЬ
Я использую этот прослушиватель кнопок для вызова в файл cropImage, вызвав активность класса CropImage. Это пользовательский настрой, а не функция обрезки внутри андроида, но я думаю, что это его копия, чтобы она поддерживала все версии, но когда я звоню в нее, выбранная область не будет ярче, и я не знаю, где проблема, может ли кто-нибудь мне навестить? благодаря
Это библиотека, в которой я использую drioid4you изображение обрезки
Ответы
Ответ 1
Можете ли вы использовать функциональные возможности по умолчанию для android Crop?
Вот мой код
private void performCrop(Uri picUri) {
try {
Intent cropIntent = new Intent("com.android.camera.action.CROP");
// indicate image type and Uri
cropIntent.setDataAndType(picUri, "image/*");
// set crop properties here
cropIntent.putExtra("crop", true);
// indicate aspect of desired crop
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
// indicate output X and Y
cropIntent.putExtra("outputX", 128);
cropIntent.putExtra("outputY", 128);
// retrieve data on return
cropIntent.putExtra("return-data", true);
// start the activity - we handle returning in onActivityResult
startActivityForResult(cropIntent, PIC_CROP);
}
// respond to users whose devices do not support the crop action
catch (ActivityNotFoundException anfe) {
// display an error message
String errorMessage = "Whoops - your device doesn't support the crop action!";
Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
toast.show();
}
}
заявляют:
final int PIC_CROP = 1;
наверху.
В методе результата onActivity напишите следующий код:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PIC_CROP) {
if (data != null) {
// get the returned data
Bundle extras = data.getExtras();
// get the cropped bitmap
Bitmap selectedBitmap = extras.getParcelable("data");
imgView.setImageBitmap(selectedBitmap);
}
}
}
Для меня довольно легко реализовать, а также отобразить темные области.
Ответ 2
Я нашел действительно классную библиотеку, попробуйте это.
это действительно гладкий и простой в использовании.
https://github.com/TakuSemba/CropMe
Ответ 3
Эта библиотека: Android-Image-Cropper очень эффективна для CropImages. В настоящее время в github есть 3 731 звезда.
Вы обрезаете свои изображения несколькими строками кода.
1 - добавьте зависимости в buid.gradle(Module: app)
compile 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
2 - добавление разрешений в AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3 - Добавить CropImageActivity в AndroidManifest.xml
<activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat"/>
4 - Запустите мероприятие в одном из нижеприведенных случаев, в зависимости от ваших требований.
// start picker to get image for cropping and then use the image in cropping activity
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);
// start cropping activity for pre-acquired image saved on the device
CropImage.activity(imageUri)
.start(this);
// for fragment (DO NOT use 'getActivity()')
CropImage.activity()
.start(getContext(), this);
5 - Получите результат в onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
Вы можете выполнить несколько настроек, например, установить соотношение сторон или форму для RECTANGLE, OVAL и многое другое.
Ответ 4
надеюсь, что у вас все хорошо.
вы можете использовать мой код для обрезки изображения. Вам просто нужно создать класс и использовать этот класс в классах XMl
и java
.
Обрезать изображение.
вы можете обрезать выбранное изображение в круг и квадрат во многих вариантах.
надеюсь, что это будет работать для вас. Потому что это полностью управляемо для вас, и вы можете изменить его в соответствии с вами.
наслаждайтесь своей работой:)
Ответ 5
проверить это я сделал это с библиотекой кроппера изображения Android
https://github.com/chiragmak10/Cropping-Image-using-android-image-cropper-