【问题标题】:pixels within a specific portion of screen Android [duplicate]屏幕Android特定部分内的像素[重复]
【发布时间】:2013-07-22 10:23:31
【问题描述】:

是否可以计算屏幕特定部分的像素数?说我画了一个圆圈并想计算没有。圆圈内的像素数!

【问题讨论】:

  • 你看过这个SO answer吗?
  • @ShivanRaptor 我知道如何计算。如果整个屏幕的像素,但我不知道如何对特定部分执行相同操作

标签: android


【解决方案1】:

您可以获取视图的宽度和高度,但这取决于您绘制圆圈的方式。如果你在画布上绘制它,你可以使用以下方法计算圆的面积:

area = Π x r(2)

您只需要圆的半径并使用 3.1415927 作为 Pi 的值。

【讨论】:

  • 我不得不放弃面积的概念..bcoz 用这种方法我们不能计算不规则图形的面积
  • 你是在画布上画画吗?
  • 是的..我在画布上画画
  • 如果您有固定的背景颜色,并且您要计算像素的“形状”是固定颜色,您可以将画布导出为位图,然后逐步检查每个像素的值。因此,如果背景是黑色,而您正在绘制红色,请计算所有像素并计算红色像素的总和。
  • 它解决了一半的问题 :) Thnxx :D
【解决方案2】:

将画布推入位图,然后计算像素数:

public static Bitmap getBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;

}

这将为您提供位图,然后逐步遍历每个像素并计算您要查找的颜色:

for(int x = 0; x < b.getWidth(); x++){
    for(int y = 0; y < b.getHeight(); y++){
        int pixel = b.getPixel(x,y);
        int r = Color.red(pixel);
        int g = Color.green(pixel);
        int b = Color.blue(pixel);

        //test against your colour here and increment counter
    }
}    

我手头没有 IDE,所以代码可能有点粗糙,但它会让你走上正确的道路。

【讨论】:

  • 非常感谢朋友:D
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多