2011-03-11 4 views
2

I 주밍을 사용하고,이 링크줌 된 비트 맵에서 픽셀 값을 얻는 방법은 무엇입니까?

http://blogs.sonyericsson.com/developerworld/2010/06/09/android-one-finger-zoom-tutorial-part-3/

을 때 I 색의 상이한 다른 RGB 값을주는 image.Its의 ontouchevent에 Bitmap.getPixel (X, Y)을 사용하고 소니의 ericssion 튜토리얼 패닝하고 . 확대 비트 맵 같은 문제가 발생합니다. 나는 확대/축소 factor also.it 나를 위해 일하는 xy 좌표 나누기 시도했다.

누군가가 나를이 문제를 해결하는 데 도움이 될 수 있습니다. 확대 된 비트 맵에서 색상 값을 가져 오는 방법은 무엇입니까?

+0

안녕하세요. 저는이 문제에 대한 답변이 있으면 같은 문제에 직면하고 있습니다. 게시 해주세요 !! –

답변

1

getPixel은 확대되지 않은 비트 맵에서 작업 중입니다. 나는 X와 Y가 터치 이벤트에서 온 것으로 가정하고 뷰와 관련이 있다고 가정합니다. 링크에서 두 개의 Rect 객체를 사용하여 크기 조정을하는 예제가 표시됩니다.

@Override 
protected void onDraw(Canvas canvas) { 
    if (mBitmap != null && mState != null) { 
     canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint); 
    } 
} 

내가 그랬다고 생각합니다. X와 Y가 RectDst가 아닌보기와 관련되기 때문에 좌표를 줌 비율로 나누기 만하면됩니다.

저는 일반적으로 Matrix 객체를 사용하여 복제, 반전 등이 쉽기 때문에 확대/축소를 수행합니다. 예를 들어 확대/축소를 Matrix를 사용하여 완료 한 경우 반전 할 수 있지만 X , Y 그리고 비트 맵을 기준으로 원래 좌표를 얻습니다.

하지만 2 개의 구형을 사용하여 매트릭스를 계산하여, 어쨌든 그것을 할 수있는 방법이있어 :

//Recreate the Matrix using the 2 Rects 
Matrix m = new Matrix() 
m.setRectToRect(mRectDst, mRectSrc, false); 
//Transform the coordinates back to the original plan 
float[] src = {x,y}; 
float[] dst = new float[2]; 
m.mapPoints(src, dst); 
myBitmap.getPixel(dst[0], dst[1]); 

나는 그것을 테스트하지 못했지만 작동해야한다 또는 적어도 도움을 당신이 당신의 솔루션을 찾을 수 있습니다.

0

Bitmap.getPixel (x, y) 느린 결과가 발생합니다. 는 byteArry 의지는 이미지의 픽셀 색상을 반환

int [] byteArry= new int [Bitmap.getWidth()*Bitmap.getHeight()] ; 

Bitmap.getPixels(byteArry, 0, Bitmap.getWidth(), 0, 0, slotBitmap_1.getWidth(), Bitmap.getHeight()); 

선호합니다.

관련 문제