Sto tentando di ritagliare un'immagine ma voglio essere in grado di impostare l'area ritagliata esattamente a 640 px x 640 px. Voglio impedire a un utente di passare a un'area molto piccola. Quindi fondamentalmente preferirei avere un'altezza e una larghezza fisse per l'area di ritaglio. Ho esaminato diverse librerie di terze parti ma non vedo come risolvere questo problema. Come posso fare questo?Ritaglia un'immagine fissa in Android
risposta
C'è un metodo che si può useÆ
private void performCrop(){
try {
//call the standard crop action intent (the user device may not support it)
Intent cropIntent = new Intent("com.android.camera.action.CROP");
//indicate image type and Uri
cropIntent.setDataAndType(selectedImage, "image/*");
//set crop properties
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", 640);
cropIntent.putExtra("outputY", 640);
//retrieve data on return
cropIntent.putExtra("return-data", true);
//start the activity - we handle returning in onActivityResult
startActivityForResult(cropIntent, PIC_CROP);
}
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();
}
}
Questa parte del codice è quello youøre interessati a:
cropIntent.putExtra("outputX", 640);
cropIntent.putExtra("outputY", 640);
Si dovrebbe chiamare il metodo delle colture in questo modo:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA && resultCode == RESULT_OK) {
selectedImage = data.getData();
performCrop();
}
if (requestCode == UPLOAD && resultCode == RESULT_OK) {
selectedImage = data.getData();
performCrop();
}
if (requestCode == PIC_CROP && resultCode == RESULT_OK){
Bundle extras = data.getExtras();
//get the cropped bitmap
Bitmap thePic = extras.getParcelable("data");
// Do what you want to do with the pic here
}
}
Userei una di queste soluzioni:
Entrambi sembra essere appropriata per risolvere il problema e di sicuro coprire più casi limite, i dispositivi e altre cose Android solo per essere più stabile e affidabile.
EDIT:
ho introdotto alcune modifiche al android-crop
e ora è possibile utilizzare withFixedSize(int width, int height)
per impostare area di ritaglio fissa in pixel.
appare come questa
private void beginCrop(Uri source) {
Uri outputUri = Uri.fromFile(new File(getCacheDir(), "cropped"));
new Crop(source).output(outputUri).withFixedSize(640, 640).start(this);
}
Qui si tratta di un codice completo pull request.
Controllare il mio github https://github.com/mklimek/android-crop/tree/newfeature_fied_size_crop.
È possibile clonare la build e aggiungerla successivamente al progetto.
Spero che ti possa aiutare.
- 1. Ritaglia immagine Android personalizzata
- 2. Ritaglia l'immagine senza OutOfMemory - Android
- 3. Ritaglia immagine come cerchio in Android
- 4. Ritaglia la parte particolare dell'immagine in Android
- 5. Intent fotocamera Android con Ritaglia
- 6. Ritaglia immagine in PHP
- 7. Ritaglia un'immagine passando il percorso del file immagine in Android
- 8. Android Scroller si lancia in posizione fissa
- 9. Android: carattere a larghezza fissa in AlertDialog
- 10. Android ListView altezza fissa articolo
- 11. WebImage Ritaglia per quadrato
- 12. 'Ritaglia' un array bidimensionale?
- 13. Ritaglia un'immagine bitmap
- 14. Ritaglia mentre selezioni dalla Galleria su Android 4.4
- 15. Fotocamera Android: messa a fuoco dell'obiettivo fissa
- 16. UIImagePickerController - ritaglia l'immagine sul quadrato (in verticale)
- 17. Trasforma prospettiva + Ritaglia in iOS con OpenCV
- 18. Ritaglia o maschera un'immagine in un cerchio
- 19. Ritaglia un'immagine usando diverse patch in matplotlib
- 20. Ritaglia bordi neri con OpenCV
- 21. ridimensiona e ritaglia immagine centrata
- 22. Swift: Ritaglia ed esporta video
- 23. C# - Ritaglia trasparente/Spazio bianco
- 24. Intestazione fissa in Jqtouch
- 25. Bootstrap 3 barra di navigazione fissa fissa fissa in visualizzazione mobile
- 26. Ritaglia l'immagine dopo aver selezionato l'area utilizzando il rilevamento dei bordi in Android
- 27. Ritaglia l'immagine quadrata al cerchio - Programmabile
- 28. Animate un UIBezierPath che ritaglia una UIImage
- 29. Perché Graphics.DrawImage ritaglia parte della mia immagine?
- 30. Ritaglia un'immagine PNG alle dimensioni minime
"Come posso fare questo?" - iniziare con una delle librerie e modificarla per incorporare la funzione desiderata. – CommonsWare
@CommonsWare L'ho fatto. Controlla la mia risposta e vota se è ciò che intendi :) – mklimek