在android中获取缩放图像位图高度和宽度

时间:2012-09-14 07:06:04

标签: android android-imageview

放大后如何获得ImageView的高度和宽度。

我使用以下代码:

mRectSrc.left = (int)(panX * bitmapWidth - viewWidth / (zoomX * 2));
            mRectSrc.top = (int)(panY * bitmapHeight - viewHeight / (zoomY * 2));
            mRectSrc.right = (int)(mRectSrc.left + viewWidth / zoomX);
            mRectSrc.bottom = (int)(mRectSrc.top + viewHeight / zoomY);
            mRectDst.left = getLeft();
            mRectDst.top = getTop();
            mRectDst.right = getRight();
            mRectDst.bottom = getBottom();

            // Adjust source rectangle so that it fits within the source image.
            if (mRectSrc.left < 0) {
                mRectDst.left += -mRectSrc.left * zoomX;
                mRectSrc.left = 0;
            }
            if (mRectSrc.right > bitmapWidth) {
                mRectDst.right -= (mRectSrc.right - bitmapWidth) * zoomX;
                mRectSrc.right = bitmapWidth;
            }
            if (mRectSrc.top < 0) {
                mRectDst.top += -mRectSrc.top * zoomY;
                mRectSrc.top = 0;
            }
            if (mRectSrc.bottom > bitmapHeight) {
                mRectDst.bottom -= (mRectSrc.bottom - bitmapHeight) * zoomY;
                mRectSrc.bottom = bitmapHeight;
            }

            canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint);

所以使用此代码我得到图像的缩放效果。如何在放大和缩小后获取位图高度和宽度。

1 个答案:

答案 0 :(得分:1)

我尝试寻找一些内置函数来获取图像视图附加的位图大小但找不到任何内容。所以,我做了一个解决方法。只需将位图的初始高度和宽度存储在某个变量中,然后使用比例因子更新这些变量值 这就是如何使用图像附加位图(将始终返回初始大小):

Drawable d = imageView.getDrawable();
    Bitmap bmp = ((BitmapDrawable)d).getBitmap();
    float w = bmp.getWidth();
    float h = bmp.getHeight();

更新值的方法:

public void updateSize(float scaleFactor)
{
     w *= scaleFactor;
     h *= scaleFactor;
}

您可以从向图像添加缩放的位置调用此方法。