問題タブ [awtrobot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - マウスの動きを人間らしくする (目的地への直線ではなく円弧を使用)
java.awt.Robot を使用して自動クリッカーを作成しています。私が持っている懸念の 1 つは、動きがあまり人間らしくないことです。誰かが私のコードに変更を加えて、より人間らしくすることを提案できますか? 今はただ一直線に動いているだけです。
更新: Bézier Curves を利用するアルゴリズムを使用することにしました。変更を実装してから非常に長い時間が経ちましたが、将来人々が役立つ場合に備えて、ここに投稿したいと思いました. これが私が最終的に得たものです:
java - Robot.createScreenCaptureは色を変更しています
スクリーンショットを撮るために私が書いたクラスは次のとおりです。
私がやっていることはBufferedImagewhatever.getRGB(x,y)
、上から撮った画面のスクリーンショットと、別の画像の一部への座標の両方で使用し、一致するものが見つかったxとyの位置を返すことです。これは白黒画像には最適ですが、色付きではありません。私が抱えている問題は、スクリーンショットのRGBカラーを元の色から変更していることです。そのため、撮影した画像を別の画像createScreenCapture
と比較すると、機能しません。createScreenCapture
createScreenCapture
より効率的にするために、スクリーンショットの色の量を減らす必要があると思いますが、それを止める方法はありますか?
java - Java Robot でキーの種類をシミュレートする
以下のように、KeyEvent からキー押下をシミュレートするメソッドを作成します。
このメソッドが「A」キーを押すイベントを受け取ると、「A」と入力できます。
しかし問題は、この KeyEvent を受け取ったとき ('a' を押す)、実際に "1" を押したことです。
この方法のどこが悪いのか誰か教えてもらえますか?
java - Java keypressed イベントが発生しない
このコードを書いているときに、jar ファイルを作成する場合、プログラムを適切に閉じる方法が必要であることに気付きました。キー「F1」を使用することにしました。私はオンラインでいくつかの記事を調査しましたが、それを処理しようとしている方法は実行可能なアプローチであることがわかりましたが、プログラムはイベント メソッドを起動していないようです。system.out.println は表示されません。
java - JavaのcreateScreenCaptureがOSXで機能せず、完全に間違った色を生成する
このコードを実行すると:
次のPNGが生成されます:http://davzy.com/screenshots/takenwithrobot.png
組み込みのOSX画面キャプチャユーティリティを使用してスクリーンショットを撮ると、次のようになります。http: //davzy.com/screenshots/takenwithOSXscreenshotutility.png
ご覧のとおり、両方の色は完全に異なります。いくつかの実験の結果、組み込みのOS Xユーティリティで撮影した上記のスクリーンショットの色は正しい色であり、ロボットで撮影したスクリーンショットの色は完全に間違っていると判断しました。
スクリーンショットのピクセルごとに比較するスクリプトを書いているので、ロボットが間違った色のスクリーンショットを作成している場合、それは機能しません。興味深いことに、上記をWindowsマシンで実行すると、問題なく動作し、正しい色が得られます。ロボットの色深度が色違いの原因かもしれないと思っていたのですが、それが問題なのかわからないし、どうやって変えたらいいのかわかりません。
java - Javaロボットと画像の比較
私は、定期的に実行する必要のあるプロセスを自動化するJavaアプリケーションを作成するというアイデアをいじっています。コーディングを開始する前に、それにアプローチするための最良の方法についてアドバイスを求めると思いました。
基本的に、私が使用しているアプリケーションでは、一度に多数の画像が画面に表示されます。私が知りたいのは、これら2つの画像のいずれかが同じであるかどうかをJavaに識別させる方法があるかどうかです。もしそうなら、私はマウスの動きとボタンのクリックを自動化したいです。
PixelGrabber
少し読んだ後、クラスとクラスが正しい開始方法かもしれないと思っていRobot
ますが、私が言ったように、提供できるこれに関する情報を探しています。
あなたの提案は何ですか?
java - Java Robot クラスを使用したベジエ曲線
私は、人間が通常行う日常のタスクを実行できるユニバーサル ロボットに取り組んでいます。
クラスの 1 つは 'mouse' で、移動、ボタンの押下など、すべてのマウス関連コマンドを処理します。
Bezier Splines (Bezier Curves) についてよく読んだことがありますが、理解できません。
私が読んだことから、4つのコントロールポイントが必要です。
マウスの動きが滑らかな曲線になるように、未知の座標を見つけるにはどうすればよいですか?
お時間をいただき、誠にありがとうございます。返信をお待ちしております。
java - getRGBを使用してJavaで類似した色を一致させる方法
ロボットを使用して画面のスクリーンショットを撮り、それらのスクリーンショット内で小さい画像を検索しています。これはWindowsでは機能しますが、ガンマ補正のためOSXでは機能しません。私が思いつくことができる最善の解決策は、正確な色の一致ではなく、単に類似した色を一致させることです。
私の恐れは、同じような色を一致させるとgetRGBを超えることになるため、プログラムの速度が低下することです(複数のスクリーンショットを撮り、それらを小さな画像と比較して一致するものをすばやく検索するため)。
私の質問は、BufferedImageScreenshotとBufferedImagesmallImageがあったとしましょう。Screenshot.getRGB(1,1)とsmallImage.getRGB(1,1)が同じような色であるかどうかをどのように判断しますか?
java - マクロレコーダー/プレーヤー
私は一種のマクロレコーダー/プレーヤーを作っています
java.awt.Robot()
基本的な人間のマウス/キーボード出力コマンドをエミュレートし、XMLファイルを読み取るなどのutilsを使用してプレーヤー部分を実行しました。
そのXMLファイルを記録しなければならない部分で立ち往生しています。Robot()の反対を行うためにどのクラスを使用できるかわかりません。私にFemaleRobot()があれば、とても嬉しいです:D
私がこれまでに持っているこの方向の唯一のものは:
これはそれほど多くはなく、実際には必要なものではありません^ _ ^、コンポーネントが必要になるため、Mouse/KeyListenerの使用方法がわかりません。それが唯一の方法である場合、グラフィカルなJava実装が必要ないため、どのCompomentを使用しますか?とにかく偽のコンポーネントを作成する必要がありますか?どれ?
たとえば、ubuntuデスクトップをクリックするか、FirefoxでEnterキーを押す方法を、レコーダーにXMLで記述させたいとします。
そうでなければ、私は答えをたくさんチェックすることになるのは明らかだと思います。良い一日をお過ごしください。これを読んでいただきありがとうございます。
java - Java: Robot#createScreenCapture(Rectangle) を使用した OutOfMemory
設定した間隔で画面をキャプチャするプログラムを書いていて、テストを開始したところ、画像のキャプチャを開始した直後に OutOfMemoryException が発生することがわかりました。もっと多くのメモリを割り当てようとしました - 256m にしましたが、ほとんど役に立ちませんでした。例外をスローして再びクラッシュする前に、さらに 2 秒または 3 秒持続させるだけでした。
createScreenCapture(...) メソッドが大量のメモリを使用することは理解していますが、同じメソッドを使用して長時間録画できるサンプル プログラムを見たことがあります。
編集:私はあなたのアドバイスのいくつかを使用しましたが、今は OutOfMemoryExceptions を取得しません! 万歳!写真をハードドライブに保存する方法を取りました。ただし、実際にアーカイブ ファイルに書き込むにはかなりの時間がかかります。アーカイブ ファイルに 63 フレームを書き込むには、約 2 分かかります。
I/O 部分を書き直しているため、コードを提供できません。^ 状況の改善に取り組んでいます。