2012-09-14 2 views
0

확대 후 ImageView의 높이 및 너비를 축소하는 방법 축소.확대 이미지 가져 오기 android의 비트 맵 높이 및 너비

나는 다음과 같은 코드를 사용하고 있습니다 :

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

이미지보기로 첨부 된 비트 맵의 ​​크기를 가져 오는 일부 내장 함수를 찾으려고했으나 찾을 수 없습니다. 그래서 해결 방법을 만들었습니다. 비트 맵의 ​​초기 높이와 너비를 변수에 저장 한 다음 이러한 변수 값을 축척 비율로 업데이트하면됩니다.

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; 
} 

을 당신은에서이 메소드를 호출 할 수
이것은 (항상 초기 크기를 반환합니다) 당신이 이미지에 첨부 된 비트 맵을 얻을 수있는 방법이다 여기서 이미지에 확대/축소를 추가합니다.

관련 문제