2011-12-17 36 views
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必須減少截圖中顏色的數量以提高效率,但是有什麼辦法可以阻止它做到這一點嗎?

+0

*「將屏幕截圖的RGB顏色從​​原來的顏色改變」*您最初的''是什麼意思?什麼軟件可以生成原始圖像?如果它也是「機器人」,那麼人們可能會猜測,無論它可能(或不可能)執行哪種優化,都會在不同的調用中保持不變。我之前編寫的軟件能夠成功檢測到用「Robot」完成的兩個屏幕截圖之間「已更改的區域」(例如,出現在其中的GUI)。 – 2011-12-17 02:41:50

回答

1

作爲參考,此example允許點擊並拖動到桌面上的一個點,顯示周圍屏幕的放大圖像。捕獲後,當鼠標移過捕獲的圖像時,顏色將顯示在工具提示中。我已經驗證了在我的平臺上使用實用程序的結果是正確的。您可以將其與您的程序和結果進行比較。