2012-03-17 9 views
9

Voglio ritagliare la parte rossa dall'immagine seguente, Esiste un semplice metodo disponibile in Android che può ritagliare l'immagine seguente.Ritaglia la parte particolare dell'immagine in Android

Sample Image that i want to crop

ho trovato molti SO domande, ma tutti sono suggerendo di utilizzare seguente codice:

Bitmap croppedBitmap = Bitmap.createBitmap(bitmapOriginal, 100, 100,100, 100); 

Questo lavoro codice ben se la larghezza & altezza sono circa risoluzione 2MP, ma se sopravvenuto parte è più di una risoluzione di 3MP rispetto all'applicazione si è arrestata in modo anomalo con l'errore OOM.

C'è un modo per gestire l'immagine più di 3MP durante il ritaglio?

risposta

6

È possibile utilizzare il seguente codice che può risolvere il problema.

Matrix matrix = new Matrix(); 
matrix.postScale(0.5f, 0.5f); 
Bitmap croppedBitmap = Bitmap.createBitmap(bitmapOriginal, 100, 100,100, 100, matrix, true); 

metodo di cui sopra fanno postScalling di immagine prima di ritaglio, in modo da poter ottenere il miglior risultato immagine ritagliata con senza ottenere l'errore OOM.

Per maggiori dettagli è possibile fare riferimento this blog

+0

qual è l'uso di postScale? – Swapnil

1

1- Modifica il tuo imageview per bitmap

final Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img); 

2- usa la tua bitmap per ritagliare quello che vuoi

Bitmap croppedBmp = Bitmap.createBitmap(bitmap, x, y , width , height); 

3-Fare attenzione x, y da Top e sinistra

4 a creare una nuova anteprima bitmap nella vostra imageview

imageView.setImageBitmap(croppedBmp); 
0

Se si desidera ritagliare un'immagine in qualsiasi forma o selezionato solo una parte allora è possibile utilizzare ready made open source library