2011-12-23 7 views
3

を生成http://davzy.com/screenshots/takenwithrobot.pngJavaのcreateScreenCaptureは、完全に間違った色

私はOS Xに組み込まれて使用してスクリーンショットを撮る場合スクリーンキャプチャユーティリティ私は次のように表示されます:http://davzy.com/screenshots/takenwithOSXscreenshotutility.png

ご覧のとおり、両方の色が全く異なっています。いくつかの実験の後、私は上記のスクリーンショットの色は、OS Xユーティリティに組み込まれている色が正しいと判断し、ロボットで撮影したスクリーンショットは完全に間違った色になります。

私は、スクリーンショットのピクセルごとに比較するスクリプトを作成しています。したがって、ロボットが間違った色のスクリーンショットを作成していると動作しません。面白いことに、もし私が上記のWindowsマシン上で実行すると、それはうまく動作し、正しい色を取得します。ロボットの色深度が間違った色の原因であったかもしれないと思っていたのですが、それが問題かどうかわかりませんし、変更方法もわかりません。

+0

これはおそらくPNGのガンマ補正とは何かです。たとえば、http://hsivonen.iki.fi/png-gamma/を参照してください。それはおそらくMac上でのみボルケージされている理由です.Macは独自のガンマ特性を持っているからです。しかし、確実にそれを修正する方法は、私は知らないのが怖いです。 – Boann

+1

@Boannは正しい、Macは常により良いガンマ(1.8)を与えようとした。 Windows(2.2)では、RGB(100,100,100)以下はすべて黒です。近似的な変換が可能でなければならない。 –

+0

私の研究では、OSXでは 'RobotPeer.getRGBPixels'(' Robot.createScreenCapture'が使う)が間違った値を返すことが示されています。これまでのところ、RobotPeerの実装はプラットフォーム固有のものであり、OSXの実装には何かがあります。 –

答えて

1

ロボットがすべてのスクリーンショットを撮る場合、問題はないはずです(2つのスクリーンショットの同じ2つの偽のピクセルが明らかに同じです)。

まず、フォーカスを持っているアプリケーションウィンドウとそうでないアプリケーションウィンドウの違いを見ました。たぶんそれは一つの説明です。 NetBeansのステータス行にある異なるグレーの場合。

さらに、標準の画面キャプチャではガンマを修正し、アンチエイリアスを行う可能性があります。多分それはここの場合です。またはその欠如 -

(。残念ながら、私のMac以外のモニタは、他の違いを示していない)

+0

私はJoopの焦点が正しいと思います。私は '/ Developer/Applications/Graphics Tools/Pixie.app'と' 'Zoom'](http://stackoverflow.com/a/3742841/230513)を使ってピクセルのサンプルを比較しても差は見られませんでした。 – trashgod

+0

あなたは窓の焦点についてあなたが正しいと申します。私は最初の質問でスクリーンショットを更新しました。問題はまだ立っている、私は恐れている。 (PS:すべてのスクリーンショットを撮るためにロボットを使用していないので、なぜ問題が存在するのですか?Windowsで比較するために1組のイメージを使用したくないです。 – Macmee

関連する問題