如何获取传递给ImageView的图像的原始尺寸?

时间:2013-12-16 17:12:18

标签: android

我正在尝试将ImageView子类化以创建自定义视图。

public class MyImageView extends ImageView

现在我通过setImageResource(int resId)

传递给MyImageView图像

现在,我需要获得传递图像的原始尺寸,

我需要在MyImageView内执行此操作,以便我可以使用该维度来实现onDraw()

我该怎么做?

3 个答案:

答案 0 :(得分:1)

Android的Drawable提供getIntrinsicHeightgetIntrinsicWidth方法,如果它支持大小属性,则应该返回基础可绘制对象的首选(在某种意义上为“真实”)大小所有。我假设它们应该在您的情况下工作,只要您阅读真实图像,但如果由于某种原因,他们没有(即返回-1),可能的解决方法可能是解析图像标题(例如,位图标题或SVG文档,手动或使用现有的图像库),或存储具有图形资源维度的地图以及资源本身。

答案 1 :(得分:0)

Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.yourBitmap);

然后尝试image.getWidthimage.getHeight()

更新

你可以设置decodebounds为true并传递该边界以获取dimensions而不解码整个位图

答案 2 :(得分:0)

Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int height = bitmap.getHeight();
int width = bitmap.getWidth();