2
這是我寫給採取截圖類:Robot.createScreenCapture正在改變顏色
public class imagemanipulation {
Dimension screenResolution;
Rectangle screenRectangle;
Robot robot;
imagemanipulation() {
try {
screenResolution = Toolkit.getDefaultToolkit().getScreenSize();
screenRectangle = new Rectangle(screenResolution);
robot = new Robot();
} catch (AWTException ex) {
Logger.getLogger(imagemanipulation.class.getName()).log(Level.SEVERE, null, ex);
}
}
public BufferedImage newScreenshot() {
BufferedImage image = robot.createScreenCapture(screenRectangle);
return image;
}
}
什麼我做的是對既有從上面拍攝的畫面截圖使用BufferedImagewhatever.getRGB(x,y)
,並且它的座標的一部分,然後返回找到匹配的x和y位置。這適用於黑白圖像,但不是彩色的。我遇到的問題是createScreenCapture
正在改變屏幕截圖的RGB顏色,因此當我將使用createScreenCapture
拍攝的圖像與其他圖像進行比較時,它永遠不會工作。
我認爲createScreenCapture
必須減少截圖中顏色的數量以提高效率,但是有什麼辦法可以阻止它做到這一點嗎?
*「將屏幕截圖的RGB顏色從原來的顏色改變」*您最初的''是什麼意思?什麼軟件可以生成原始圖像?如果它也是「機器人」,那麼人們可能會猜測,無論它可能(或不可能)執行哪種優化,都會在不同的調用中保持不變。我之前編寫的軟件能夠成功檢測到用「Robot」完成的兩個屏幕截圖之間「已更改的區域」(例如,出現在其中的GUI)。 – 2011-12-17 02:41:50