Ho difficoltà a capire come consentire all'utente di ritagliare l'immagine. Vorrei dare una variabile bitmap con bitmap caricata per ritagliare l'immagine prima di impostarla come sfondo. Ma non riesco a farlo ... Ecco, ci ho provato.Consenti all'utente di ritagliare l'immagine
Prima versione. = Funziona come previsto, MA l'immagine restituita ha una risoluzione scadente. Cambiare l'output a un valore più alto non aiuta. Come ho visto in alcuni post, non è consigliabile utilizzare la fotocamera, poiché non tutti i dispositivi supportano questo.
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);
Secondo. Carica il selettore di immagini e ritaglia in seguito. Come posso configurarlo per caricare il raccolto direttamente sulla mia immagine? Proprio come nella versione 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);
E risultato onActivity
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) {}
}
}
non so whever questi sono i metodi corretti per rendere questo fatto, ma spero che qualcuno mi potrebbe punto nella giusta direzione. Quale, perché e come usarlo.
Update: sto ancora aspettando che qualcuno sottolineano come farlo correttamente, le risposte al di sotto stanno lavorando ma tornando immagini a bassa risoluzione, quindi non sono la possibilità di utilizzare
basta aggiungere il metodo di coltura prima che l'utente torna alla vostra attività. prima di impostare view.setImageBitmap o qualsiasi altra cosa tu faccia passare il metodo di ritaglio. – k0sh
@Datenshi torno con la soluzione utilizza questo link https://github.com/edmodo/cropper, Questa è l'unica demo codice del progetto strega uno risolvere il problema. –
@Datenshi Basta provare questo codice, so che questa volta non mi sbaglio !! –