Recortar imagen en android
Quiero recortar la imagen. Encontré algunas bastante útiles, pero de alguna manera me falta oscurecer las áreas no seleccionadas, así que me pregunto: ¿alguien sabe cómo? o guiarme en la dirección correcta? El tutorial en línea que encontré muestra que oscurecerá el área seleccionada, pero cuando lo uso, no lo hará. Por favor ayúdenme muchas gracias y perdón por mi mal dominio del inglés.
Enlaces al tutorial que uso.
Tutorial de recorte de imagen 1
Tutorial de recorte de imagen 2
Quiero que sea algo como esto.
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);
}
});
EDITAR Utilizo este botón de escucha para llamar al archivo cropImage llamando a la actividad de clase CropImage. Esta es una intención personalizada, no la función de recorte dentro de Android, pero creo que es una copia para que sea compatible con todas las versiones, pero cuando la invoco, el área seleccionada no se ilumina y no sé dónde está el problema. ¿Alguien puede guiarme? Gracias Esta es la biblioteca que estoy usando drioid4you recortar imagen
¿Puedes utilizar la funcionalidad de recorte predeterminada de Android?
Aquí está mi código.
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();
}
}
declarar:
final int PIC_CROP = 1;
hasta arriba.
En el método de resultado de onActivity, escriba el siguiente código:
@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);
}
}
}
Para mí es bastante fácil de implementar y también muestra áreas oscuras.
Esta biblioteca: Android-Image-Cropper es muy poderosa para CropImages. Tiene 3731 estrellas en github en este momento.
Recortarás tus imágenes con unas pocas líneas de código.
1 - Agregue las dependencias a buid.gradle (Módulo: aplicación)
compile 'com.theartofdev.edmodo:android-image-cropper:2.7.+'
2 - Agregue los permisos en AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3 - Agregue CropImageActivity a AndroidManifest.xml
<activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat"/>
4 - Inicie la actividad con uno de los casos siguientes, según sus requisitos.
// 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 - Obtener el resultado en 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();
}
}
}
Puedes realizar varias personalizaciones , como establecer la relación de aspecto o la forma en RECTÁNGULO, OVALADO y mucho más.
Hice una biblioteca realmente genial, prueba esto. Esto es realmente fluido y fácil de usar.
https://github.com/TakuSemba/CropMe
espero que estés bien. puedes usar mi código para recortar la imagen. Solo tienes que crear una clase y usarla en tus clases XMl
y java
.
Delimitar imagen . Puede recortar la imagen seleccionada en un círculo y un cuadrado en muchas de las opciones. Espero que funcione para usted, porque esto es totalmente manejable para usted y puede cambiarlo según sus necesidades.
disfruta tu trabajo :)