2011-10-04 8 views
14

Estoy teniendo un Activity que tiene un ImageView personalizado definido en XML para la funcionalidad Zoom de pellizco en una imagen. Ahora, mi problema es que quiero buscar la escala Bitmap de la funcionalidad Pinch Zoom. Por ejemplo, si el usuario realiza un zoom en la imagen, entonces quiero almacenar el tamaño exacto y la posición de la imagen como mapa de bits.Cómo obtener escalado Mapa de bits de ImageView

Esta es mi imagen personalizada declarada en XML.

<com.cam.view.PinchZoom_ImageView 
    android:id="@+id/gallery_selected_image_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/icon" 
    android:scaleType="center" 
/> 

ACTUALIZACIÓN:

Estoy tratando el código de abajo para conseguir la imagen escalada, pero devuelve un mapa de bits en blanco.

 pinchZoom.setDrawingCacheEnabled(true); 
     pinchZoom.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
     pinchZoom.layout(0, 0, pinchZoom.getMeasuredWidth(), pinchZoom.getMeasuredHeight()); 
     pinchZoom.buildDrawingCache(true); 
     Bitmap_gallery_Item = Bitmap.createBitmap(pinchZoom.getDrawingCache()); 
     pinchZoom.setDrawingCacheEnabled(false); 

Cualquier ayuda sería apreciada. Gracias

Respuesta

12

Bueno, al final no puedo creer que se trataba de un código de una sola línea. Finalmente logré usar el matrix. La solución es muy simple: estaba almacenando el translation and scaling de la imagen en una matriz. Entonces, declaré que el matrix final era public static y usé esa matriz para crear un mapa de bits en el lienzo.

 Canvas comboImage = new Canvas(cs); 
     background = Bitmap.createScaledBitmap(background, width, height, true); 
     comboImage.drawBitmap(background, 0, 0, null); 
     comboImage.drawBitmap(foreground, PinchZoom_ImageView.matrix, null); 

Como pueden ver aquí PinchZoom_ImageView.matrix. Es un matrix que contiene mi posición final de la imagen escalada y traducida que había declarado como public static.

+0

bueno ... ¿funcionará en cada ImageView que fue declarado en XMl? – Siten

+0

sí, funcionará para cualquier imagen que se aplica zoom. –

+0

@Lalit Poptani: parece que esto funciona solo si la matriz ImageView está configurada explícitamente. Sería genial tener una forma que simplemente extraiga un mapa de bits como se muestra actualmente, independientemente del tipo de escala. – Lee

0

Si tiene scaleType="fitxy", entonces puede usar un factor de escala para agrandar o reducir el ancho/alto de ImageView - También significa que puede retirar el alto/ancho exacto de la imagen porque tiene las mismas dimensiones como es contenedor.

HTH

+0

No estoy teniendo fitxy buddy, mi imagen es movible y también permite el zoom, así que quiero almacenar el mapa de bits después de la traducción, así como la escala de la imagen. Gracias –

+0

Ok - No sé cuál es la situación, pero ¿podría hacer que la imagen no se pueda mover y hacer zoom mediante la implementación de ImageView como se indica anteriormente? – Graeme

+0

Por arriba, ¿lo dice usando scaleType = "fitxy" ?. –

0

Este puesto incluye recortar la imagen de la galería y permite al usuario recortar la imagen y guardar la imagen recortada y Shows en ImageView.

Parece que le ayudará a algunos extiende

Image Crop and show cropped Image in View

+0

Gracias. Voy a verificar y dejarle saber amigo ... –

+0

@Lalit Poptani Okay da machan – Venky

Cuestiones relacionadas