Recortar imagen en android

Resuelto I Yeu C asked hace 54 años • 5 respuestas

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.

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

I Yeu C avatar Jan 01 '70 08:01 I Yeu C
Aceptado

¿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.

Akbari Dipali avatar Mar 06 '2013 04:03 Akbari Dipali

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.

Soon Santos avatar Aug 23 '2018 11:08 Soon Santos

Hice una biblioteca realmente genial, prueba esto. Esto es realmente fluido y fácil de usar.

https://github.com/TakuSemba/CropMe

Taku Semba avatar Sep 13 '2017 14:09 Taku Semba

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 XMly 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 :)

John smith avatar Feb 15 '2016 06:02 John smith