を生成http://davzy.com/screenshots/takenwithrobot.pngJavaのcreateScreenCaptureは、完全に間違った色
私はOS Xに組み込まれて使用してスクリーンショットを撮る場合スクリーンキャプチャユーティリティ私は次のように表示されます:http://davzy.com/screenshots/takenwithOSXscreenshotutility.png
ご覧のとおり、両方の色が全く異なっています。いくつかの実験の後、私は上記のスクリーンショットの色は、OS Xユーティリティに組み込まれている色が正しいと判断し、ロボットで撮影したスクリーンショットは完全に間違った色になります。
私は、スクリーンショットのピクセルごとに比較するスクリプトを作成しています。したがって、ロボットが間違った色のスクリーンショットを作成していると動作しません。面白いことに、もし私が上記のWindowsマシン上で実行すると、それはうまく動作し、正しい色を取得します。ロボットの色深度が間違った色の原因であったかもしれないと思っていたのですが、それが問題かどうかわかりませんし、変更方法もわかりません。
これはおそらくPNGのガンマ補正とは何かです。たとえば、http://hsivonen.iki.fi/png-gamma/を参照してください。それはおそらくMac上でのみボルケージされている理由です.Macは独自のガンマ特性を持っているからです。しかし、確実にそれを修正する方法は、私は知らないのが怖いです。 – Boann
@Boannは正しい、Macは常により良いガンマ(1.8)を与えようとした。 Windows(2.2)では、RGB(100,100,100)以下はすべて黒です。近似的な変換が可能でなければならない。 –
私の研究では、OSXでは 'RobotPeer.getRGBPixels'(' Robot.createScreenCapture'が使う)が間違った値を返すことが示されています。これまでのところ、RobotPeerの実装はプラットフォーム固有のものであり、OSXの実装には何かがあります。 –