it-swarm.com.de

Ernte Bild in Android

Ich möchte ein Bild zuschneiden. Ich habe einige ziemlich nützliche gefunden, aber irgendwie ist es so, als ob die nicht ausgewählten Bereiche dunkel erscheinen, also frage ich mich, ob jemand weiß, wie? oder führe mich in die richtige Richtung? Das Online-Tutorial, das ich gefunden habe, zeigt, dass der ausgewählte Bereich dunkler wird, aber wenn ich ihn benutze, wird er nicht verwendet. Bitte helfen Sie mir, vielen Dank und Entschuldigung für meine schlechten Englischkenntnisse.

Links zu dem von mir verwendeten Tutorial.

Crop Image Tutorial 1

Crop Image Tutorial 2

Ich möchte, dass es so etwas ist.

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);

        }
});

EDIT Ich benutze diesen Listener, um die cropImage-Datei aufzurufen, indem ich die Klasse CropImage-Aktivität aufrufe. Dies ist eine benutzerdefinierte Absicht, nicht die Zuschneidefunktion in Android, aber ich denke, es ist die Kopie davon, so dass alle Versionen unterstützt werden. Wenn ich jedoch den ausgewählten Bereich anrufe, wird der ausgewählte Bereich nicht aufgehellt und ich weiß nicht, wo das Problem liegt. Kann mich jemand führen? Danke Dies ist die Bibliothek, die ich verwende - drioid4you crop image

30
user1235085

Können Sie die Standardfunktion für Android Crop verwenden?

Hier ist mein Code

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();
    }
}

erklären:

final int PIC_CROP = 1;

an der Spitze.

Schreiben Sie in der Ergebnismethode onActivity folgenden Code:

@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);
        }
    }
}

Es ist ziemlich einfach für mich zu implementieren und zeigt auch dunkle Bereiche.

48
Akbari Dipali

Diese Bibliothek: Android-Image-Cropper ist für CropImages sehr leistungsfähig. Es hat zu diesem Zeitpunkt 3.731 Sterne auf Github.

Sie beschneiden Ihre Bilder mit ein paar Zeilen Code.

1 - Fügen Sie die Abhängigkeiten in buid.gradle hinzu (Modul: app)

compile 'com.theartofdev.edmodo:Android-image-cropper:2.7.+'

2 - Fügen Sie die Berechtigungen in AndroidManifest.xml hinzu

<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>

3 - Fügen Sie CropImageActivity zu AndroidManifest.xml hinzu

<activity Android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
 Android:theme="@style/Base.Theme.AppCompat"/>

4 - Beginnen Sie die Aktivität mit einem der folgenden Fälle, je nach Ihren Anforderungen.

// 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 - Holen Sie sich das Ergebnis in 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();
    }
  }
}

Sie können mehrere Anpassungen vornehmen, indem Sie das Seitenverhältnis oder die Form auf RECTANGLE, OVAL und vieles mehr einstellen. 

3
Soon Santos

Ich habe eine wirklich coole Bibliothek gefunden, probiere es aus. das ist wirklich reibungslos und einfach zu bedienen.

https://github.com/TakuSemba/CropMe

2
Taku Semba

ich hoffe, es geht Ihnen gut. Sie können meinen Code verwenden, um image zu beschneiden. Sie müssen nur eine Klasse erstellen und diese Klasse in Ihre XMl- und Java-Klassen . Bild . zuschneiden Sie können Ihr ausgewähltes Bild in Kreis und Quadrat in viele Optionen zuschneiden. Ich hoffe, es wird für Sie funktionieren. Denn dies ist völlig überschaubar und Sie können es nach Ihren Wünschen ändern.

viel Spaß bei der Arbeit :)

1
John smith