¿Cómo obtener las dimensiones originales de una imagen pasada a ImageView?

Intento subclasificar ImageView para crear una vista personalizada.

public class MyImageView extends ImageView

Now I pass to MyImageView an image via setImageResource(int resId)

Ahora, necesito que se pasen las dimensiones originales de la imagen,

Necesito hacer eso desde adentro de MyImageView para poder usar la dimensión para mi implementación de onDraw() .

¿Cómo puedo hacer eso?

0
@Stan tuya es la sugerencia más valiosa hasta el momento. ¡Gracias!
agregado el autor Lisa Anne, fuente
@Stan, sí, ve por ello
agregado el autor Lisa Anne, fuente
¿Intentó getIntrinsicHeight y getIntrinsicWidth de Drawable ?
agregado el autor Stan, fuente
@LisaAnne, puedo publicarlo como una respuesta, por lo que lo aceptaría.
agregado el autor Stan, fuente
@LisaAnne, hecho. ¿Por qué no podemos votar avatares aquí? ;-)
agregado el autor Stan, fuente
Mapa de bits b = ((Mapa de bits dibujable) imageView.getBackground ()). GetBitmap (); int w = b.getWidth (); int h = b.getHeight ();
agregado el autor Anil kumar, fuente

3 Respuestas

El Drawable de Android proporciona < código> getIntrinsicHeight y getIntrinsicWidth métodos que se supone devuelven un tamaño preferido ("real" en cierto sentido) de un objeto dibujable subyacente, si es compatible con el atributo de tamaño. Supongo que deberían funcionar en su caso en la medida que lea imágenes reales, pero si, por algún motivo, no lo hacen (es decir, devuelve -1), posibles soluciones podrían ser analizar encabezado de imagen (por ejemplo, encabezado de mapa de bits o SVG) documentar, manualmente o usando las bibliotecas de imágenes existentes), o almacenar un mapa con las dimensiones de sus recursos gráficos junto con los recursos mismos.

0
agregado

Imagen de mapa de bits = BitmapFactory.decodeResource (getResources (), R.drawable.yourBitmap);

Then try image.getWidth and image.getHeight()

UPDATE

puede establecer decodebounds como verdadero y pasar esos límites para obtener dimensions sin descodificar todo el mapa de bits

0
agregado
eso es Arju, pero necesito hacerlo desde el interior de la subclase
agregado el autor Lisa Anne, fuente
puede obtenerlo desde cualquier lugar simplemente pase el contexto si es necesario
agregado el autor Viswanath Lekshmanan, fuente
publica tu código de subclase
agregado el autor Viswanath Lekshmanan, fuente
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int height = bitmap.getHeight();
int width = bitmap.getWidth();
0
agregado
thaks birdy pero necesito hacerlo desde el interior de la subclase
agregado el autor Lisa Anne, fuente
así que puedes simplemente llamar Bitmap bitmap = ((BitmapDrawable) getDrawable ()). getBitmap() para obtener bitmap
agregado el autor birdy, fuente