我正在使用此链接使用sony ericssion教程进行缩放和平移
http://blogs.sonyericsson.com/developerworld/2010/06/09/android-one-finger-zoom-tutorial-part-3/
当我在图像的ontouchevent中使用Bitmap.getPixel(x,y)时,它会给出不同的RGB颜色值。在缩放位图之后会发生同样的问题。我已经尝试过xy坐标除以缩放因子。它不是为我工作。
可以帮助我解决这个问题。如何在缩放的位图上获取颜色值?
答案 0 :(得分:1)
getPixel正在处理你的unzoomed Bitmap。 我假设X和Y来自触摸事件并且与View相关。 我在你的链接中看到该示例正在使用两个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]);
我没有对它进行测试,但它应该可行或者至少可以帮助您找到解决方案。
答案 1 :(得分:0)
Bitmap.getPixel(x,y)得到很慢的结果。 喜欢
int [] byteArry= new int [Bitmap.getWidth()*Bitmap.getHeight()] ;
Bitmap.getPixels(byteArry, 0, Bitmap.getWidth(), 0, 0, slotBitmap_1.getWidth(), Bitmap.getHeight());
byteArry
将返回图像的像素颜色。