【问题标题】:java robot.getPixelColor(x,y) questionjava robot.getPixelColor(x,y) 问题
【发布时间】:2011-01-02 11:06:24
【问题描述】:

首先关闭代码:

for (int i = 0; i < 25; i++)
{
robot.delay(1000);// wait 1 second
Color pixel_4 = robot.getPixelColor(x-15, 30);
System.out.println(pixel_4.getRed() + " " + pixel_4.getGreen() + " " + pixel_4.getBlue());
}

这不是我使用的确切代码,但它会产生相同的情况: 如果我在程序中运行这个循环并且整个循环的屏幕完全相同,它偶尔会输出如下内容:

255 255 255

...(相同颜色)

...

...

...

...

...

...

...

124 142 012

255 255 255

据我所知,屏幕是静态的,但 robot.getPixelColor(x,y) 方法返回了一组错误的值。

有没有人对此有任何经验或直觉?我能做些什么来防止它发生吗?

谢谢

【问题讨论】:

  • 危险 MK!危险! (还有 java.awt.Robot 是一个便于非常基本的 GUI 测试或自动化 GUI 交互的类)。
  • 我在一个项目中使用 Robot 类来捕获多个屏幕截图,旨在帮助最终用户选择一个屏幕区域来获取动画屏幕截图。这个想法是让用户在感兴趣的对象被最小化时截取屏幕截图,并在它可见时截取另一张截图。然后通过两幅图像的比较来预测感兴趣的区域。它按预期工作。换一种说法。我认为您的代码或逻辑是错误的-并且 sn-p 不足以说明出了什么问题。我建议先使用静态图像进行测试,然后将其设为 SSCCE。
  • 我刚刚尝试了代码,没有问题,但我硬编码了 x/y 值。你的“x”值有没有可能改变?
  • @Andrew Thompson:我不确定 SSCCE 是什么,但我必须仔细检查以确保我的图像是静态的。
  • @camickr:我相当肯定 x 值保持不变,但我也会仔细检查。谢谢!

标签: java getpixel


【解决方案1】:

出于显而易见的原因;你的逻辑有问题。这是一个想法:

假设您有一个宽度为 200 像素的屏幕,假设您的算法检查屏幕边界之外的像素的颜色(即 201、0)。 robot.getPixelColor 返回什么?它要么返回图像边界之外的颜色,要么返回某种无效结果。

有了 siad,确保您的算法检查图像约束范围内的有效像素;这可能是您的结果模糊不清的原因。

希望这有助于或导致适当的解决方案

【讨论】:

  • 好主意,我会调查一下,但我相当肯定事实并非如此。 +1
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
相关资源
最近更新 更多