2012-10-12 125 views
6

tengo que recortar un mapa de bits image.For esto estoy usandoBitmap.createBitmap (fuente de mapa de bits, int x, int y, int ancho, int altura) volver mapa de bits mal

Bitmap bitmap = Bitmap.createBitmap(imgView.getWidth(),imgView.getHeight(), Bitmap.Config.RGB_565); 
Bitmap result =Bitmap.createBitmap(bitmap,imgView.getLeft()+10, imgView.getTop()+50, imgView.getWidth()-20, imgView.getHeight()-100); 
bitmap.recycle(); 
Canvas canvas = new Canvas(result); 
imgView.draw(canvas); 

Pero se corta la parte inferior y a la derecha del mapa de bits. La parte superior e izquierda del mapa de bits existe en la salida. Eso significa que la posición xey no tiene ningún efecto.

Estoy buscando una buena documentación. Pero no pude.

Gracias de antemano

¿Cuál es el problema aquí y la forma de resolver?

Respuesta

10

Básicamente, su problema surge del hecho de que crea un mapa de bits. Usted no pone nada en eso. A continuación, crea un mapa de bits más pequeño y luego representa un imageView en ese mapa de bits más pequeño.

Esto corta los 100 píxeles inferiores y los 20 píxeles a la derecha.

Debe crear el mapa de bits grande. Agregue los datos de la vista de imagen a ese mapa de bits. Luego, vuelva a clasificar según el tamaño.

El siguiente código debería funcionar:

Bitmap bitmap = Bitmap.createBitmap(imgView.getWidth(),imgView.getHeight(), Bitmap.Config.RGB_565); 
Canvas canvas = new Canvas(bitmap); 
imgView.draw(canvas); 
Bitmap result =Bitmap.createBitmap(bitmap,imgView.getLeft()+10, imgView.getTop()+50, imgView.getWidth()-20, imgView.getHeight()-100); 
bitmap.recycle(); 
+0

Gracias you.It funciona bien. –

+0

gracias jefe. funciona bien – basheer

Cuestiones relacionadas