2011-12-17 2 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 'でもあれば、どのような最適化を行っても実行していなくても、さまざまな呼び出しで一定であると推測できます。 「Robot」で行われた2つのスクリーンショットの間に、「変更された領域」(たとえば、GUIが1つに表示される)を検出するソフトウェアを作成しました。 –

+0

私の問題は、ロボットがキャプチャした画像が正しい色の値を失っているように見えるということです。ロボットを使って撮影した画像の色は、やや歪んでいるので、この変色によって他の画像と比較することはできません。なぜ私はロボットがこれをやっているのか分かりません。 – Macmee

+0

その言葉の中で、私は何のソフトウェアが元のイメージを生成するかについての答えは表示されませんか?** –

答えて

1

参考として、このexampleをクリックすると、デスクトップ上のあるポイントまでドラッグして、周囲のスクリーンの拡大画像を表示できます。一度キャプチャされると、マウスがキャプチャされたイメージ上を移動するときに、ツールチップにカラーが表示されます。プラットフォーム上のユーティリティを使用して結果が正しいことを確認しました。それをあなたのプログラムと結果と比較するかもしれません。

関連する問題