gpt4 book ai didi

android - 如何在缩放位图上获取像素颜色值?

转载 作者:行者123 更新时间:2023-11-29 02:14:18 25 4
gpt4 key购买 nike

我正在使用带有此链接的索尼爱立信教程进行缩放和平移

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

当我在图像的 ontouchevent 中使用 Bitmap.getPixel(x,y) 时。它给出了不同的颜色 RGB 值。在缩放位图后发生同样的问题。我也尝试了 x y 坐标除以缩放因子。它没有为我工作。

请有人帮我解决这个问题。如何在缩放位图上获取颜色值?

最佳答案

getPixel 正在处理未缩放的位图。我假设 X 和 Y 来自触摸事件并且与 View 相关。我在您的链接中看到示例正在使用两个 Rect 对象进行调整。

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

我想这也是您的做法。简单地将您的坐标除以缩放比例是行不通的,因为 X 和 Y 是相对于您的 View 而不是 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]);

我没有测试它,但它应该可以工作,或者至少可以帮助您找到解决方案。

关于android - 如何在缩放位图上获取像素颜色值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com