2 Stimmen

Wie man den Bildpfad Uri und Crop für alle Geräte erhält

Ich habe mein Hauptprojekt, das Bilder aus bestimmten Quellen erhält (gibt Uri zurück). Der nächste Schritt war, das Bild zu beschneiden, um zu skalieren (Touch-Eingabe). Ich habe vor kurzem herausgefunden, dass einige Telefonhersteller mit den Android-Basisklassen so herumspielen:

com.android.camera.action.crop 

gibt es nicht immer.

Ich habe also eine Bibliothek gefunden, die das Zuschneiden ermöglicht: https://github.com/lvillani/Android-cropimage Ich habe die Bibliothek in meinen Eclipse-Build-Pfad und Projektbibliotheken hinzugefügt.

Meine Frage ist, ob ich die Bibliothek auf diese Weise öffnen kann:

    Intent intent = new Intent("com.android.camera.action.CROP");  
    //intent.setClassName("com.android.camera", "com.android.camera.CropImage"); 
    intent.setDataAndType(uri, "image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("output", Uri); 
    intent.putExtra("outputFormat", "JPEG");
    startActivityForResult(intent, 1);  

Und dann das zugeschnittene Bild abrufen, oder muss ich noch etwas anderes tun?

  1. Eine andere Frage: Wird sich dies auch auf meine App auswirken, wenn ich sie auf den Markt bringe (muss der Benutzer die zusätzliche Bibliothek herunterladen oder deren Genehmigung akzeptieren?

Ich möchte sicherstellen, dass meine App auf allen Geräten funktioniert, ist das also die beste Methode? Oder gibt es bessere Methoden, bitte erklären. (Auch halten Sie es einfach, ziemlich neu zu Android dev!, danke!)

4voto

Oliver Dixon Punkte 6507

Ich installierte die Bibliothek und vergewisserte mich, dass sie mit meinem Projekt verknüpft war und sich im Build-Pfad befand, dann tat ich es einfach:

Öffnen Sie den Dateimanager:

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Picture"), PICK_FROM_FILE);

Alternativ können Sie auch mit der Kamera aufnehmen

        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, GET_IMAGE_FROM_CAMERA);

Dann das Bild zuschneiden:

    Intent intent = new Intent(this, com.android.camera.CropImage.class);
    intent.setData(uri);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, CROP);

Ich habe dies auf einigen Geräten getestet und es funktioniert einwandfrei. Funktioniert auch mit der Kamera.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X