Ich habe eine harte Zeit herauszufinden, wie der Benutzer das Bild beschneiden lassen. Ich möchte Bitmap-Variable mit geladenen Bitmap geben, um das Bild zu beschneiden, bevor es als Hintergrundbild festgelegt wird. Aber ich versage es ... Hier ist, dass ich es versucht habe.Lassen Sie den Benutzer crop Bild
Erste Version. = Funktioniert wie erwartet, aber das zurückgegebene Bild hat eine schlechte Auflösung. Das Ändern der Ausgabe auf einen höheren Wert hilft nicht. Wie ich in einem Post gesehen habe, ist es nicht empfehlenswert, die Kamera zu benutzen, da nicht alle Geräte dies unterstützen.
Intent intent = new Intent("com.android.camera.action.CROP");
String path = Images.Media.insertImage(context.getContentResolver(), loaded,null, null);
Uri uri = Uri.parse(path);
intent.setData(uri);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, 2);
Sekunde. Bildauswahl laden und danach zuschneiden. Wie kann ich das so konfigurieren, dass das Bild direkt auf mein Bild geladen wird? Genau wie in Version 1
Intent photoPickerIntent = new Intent(MediaStore.ACTION_PICK);
photoPickerIntent.setData(uri);
photoPickerIntent.putExtra("crop", "true");
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(photoPickerIntent, 2);
Und onActivity Ergebnis
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) { return; }
if(requestCode == 2) {
Bundle extras = data.getExtras();
if(extras != null) {
Bitmap photo = extras.getParcelable("data");
loaded = photo;
}
WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
myWallpaperManager.setBitmap(loaded);
} catch (IOException e) {}
}
}
Ich weiß nicht, whever das sind die richtigen Methoden, um dies zu tun, aber ich hoffe, dass jemand mich in die richtige Richtung zeigen könnte. Welches, warum und wie zu verwenden.
Update: ich noch für jemanden warte darauf hinzuweisen, wie man es richtig zu tun, unten Antworten arbeiten aber Bilder in schlechter Auflösung zurückkehren, so dass sie keine Option verwenden
Fügen Sie einfach die Beschnittmethode hinzu, bevor der Benutzer zu Ihrer Aktivität zurückkehrt. bevor Sie view.setImageBitmap oder was auch immer Sie tun, übergeben Sie die Beschneidungsmethode. – k0sh
@Datenshi Ich komme zurück mit Ihrer Lösung verwenden Sie diesen Link https://github.com/edmodo/cropper, Dies ist der eine Demo-Projektcode, mit dem Sie Ihr Problem lösen. –
@Datenshi Versuchen Sie einfach diesen Code, ich weiß dieses Mal, ich bin nicht falsch !! –