【发布时间】:2013-11-10 08:55:38
【问题描述】:
我在 java 中遇到了关于像素搜索的问题。 目前,我的课程/程序正在逐个像素地搜索,这对我的目的来说很慢。 我不想让 Java 更快地搜索像素,所以我想到了问你们的想法。 我正在通过 RGB 颜色搜索像素。这是我的源代码:
final int rot = 0;
final int gruen = 0;
final int blau = 0;
int toleranz = 1;
Color pixelFarbe;
Dimension bildschirm = Toolkit.getDefaultToolkit().getScreenSize();
Robot roboter = null;
try {
roboter = new Robot();
} catch (AWTException e) {
e.printStackTrace();
OrbitRaider.log("Robot is not working.");
}
for(int x = 0; x <= bildschirm.getWidth(); x++)
{
for(int y = 0; y <= bildschirm.getHeight(); y++)
{
// Pixelfarbe bekommen
pixelFarbe = roboter.getPixelColor(x, y);
// Wenn Pixelfarbe gleich unserer Farbe
if( (pixelFarbe.getRed() < (rot - toleranz)) || (pixelFarbe.getRed() > (rot + toleranz))
&& (pixelFarbe.getGreen() < (gruen - toleranz)) || (pixelFarbe.getGreen() > (gruen + toleranz))
&& (pixelFarbe.getBlue() < (blau - toleranz)) || (pixelFarbe.getBlue() > (blau + toleranz)) ){("Could not find Pixel Color");
}
else{
System.out.println("Pixelcolor found at x: " + x + " y: " + y);
}
}
}
【问题讨论】:
-
您还没有公开 getPixelColor 函数的工作原理,这非常重要!如果每次调用 getPixelColor 时都调用本机 dll,那么结果会很慢。相反,您应该拍摄屏幕快照并检查存储在内存中的像素。如果这对您来说甚至是一个问题。您需要提供更多信息。
-
@Chill:是
java.awt.Robot。是的,获得一个像素肯定会变慢。 -
我没有意识到 jdk 有像素抓取功能。我只是根据其他语言的经验发言。 Ibalazscs 下面的回答正是我建议你做的。主要瓶颈实际上是获取初始像素信息,而不是扫描您拥有的信息。如果你批量购买,它会快得多。
标签: java performance search optimization pixel