2011-03-25 12 views

Respuesta

15

La manera más fácil que conozco es usar el procesamiento del modo XFer del paquete Graphics. La función a continuación corta la región desde (30,30) hasta (100,100) a la imagen de 320x480 cargada desde los recursos. Adaptar las coordenadas para cambiar dinámicamente:

private Bitmap cropBitmap1() { 
    Bitmap bmp2 = BitmapFactory.decodeResource(this.getResources(), R.drawable.image1); 
    Bitmap bmOverlay = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888); 

    Paint paint = new Paint(); 
    paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); 

    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp2, 0, 0, null); 
    canvas.drawRect(30, 30, 100, 100, paint); 

    return bmOverlay; 
} 
+0

hey, esto borrará todo el mapa de bits ... quiero borrar solo la parte seleccionada después de copiar. –

+0

no todo, solo porción. Pruébalo y lo verás. Revisé el código antes de publicarlo. – Zelimir

+0

bien, voy a intentar esto ahora –

109

Sólo en caso de que alguien está tratando de resolver el mismo problema, hay una solución mejor: Bitmap.createBitmap(Bitmap, int x, int y, int width, int height). Por ejemplo, si necesita recortar 10 píxeles de cada lado de un mapa de bits, use esto:

Bitmap croppedBitmap = Bitmap.createBitmap(originalBitmap, 10, 10, originalBitmap.getWidth() - 20, originalBitmap.getHeight() - 20); 
+0

¡Impresionante! Mejor manera para mí :) – Angudroid

+0

¿Cómo puedo extraer un rectángulo de un mapa de bits dinámico (un mapa de bits capturado desde la cámara)? – TharakaNirmana

+0

No recibí tu pregunta. El mismo enfoque funcionaría: recortar el mapa de bits es lo mismo que extraer el rectángulo –

Cuestiones relacionadas