私の作成画面キャプチャのモジュールはJavaでいる真の課題を書画面へのディスク。このことができますか?

StackOverflow https://stackoverflow.com/questions/1087891

質問

私の作成画面キャプチャを用いたモジュールのロボットのクラスです。っては、画面の申請毎にxをミリ秒単位の書きします。後の画面キャプチャを終えて、私の作成の画面の映像とGPARTED.

しかし、イメージの書き込みディスクは極めて少なく研磨申込みに歯止めがかかっています。と思欠?がより良い方法を書く簡単な画面キャプチャのモジュール?

編集:またこのような動向に応えるかのように画像をディスクにありが遅くなります。ってこだわり、より使いやすさ:

ImageIO.write(bufferedImage ,"jpg", file);
役に立ちましたか?

解決

それとも、画像をキャプチャし、すべての大規模な一時ファイルを書き込まないよう右ときのビデオフォーマットに画像を符号化します。 Xugglerを使用して完全なコードはここで見つけることができます:

Xuggler画面キャプチャデモコードする

他のヒント

あなたが遅いディスクIOを待つ必要はありませんので、

新しいスレッドにあなたのライトを入れてみてください。

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
executor.schedule(new Runnable(){
    @Override
     public void run() {
            writeImageHere(bufferedImage, file);
     }                  
}

ただ、並行性の問題に気をつけます。

(メモリ集約)第2の解決策は、あなたのJPGのみをバッファリングし、メモリにそれらすべてを維持し、一定の時間が経過したり、プログラムが終了したときにのみ記述することです。

デフォルトのバッファの画像は非常に大きい。みられるようになっていとして形式として書きします。

私は使用します。pngは以前から小型ます。

ポストよりコードや他のものが誤っている可能性が考えられる。

編集

その結果が、先ほど任天堂さん:

        BufferedImage bufferedImage  = new BufferedImage(
                                              widthFromRobot, 
                                              heightFromRobot,
                                              BufferedImage.    TYPE_3BYTE_BGR );

        bufferedImage.getGraphics().drawImage( fromRobotScreenCapture, 0,0, null );

       // get a file name 
       ImageIO.write( bufferedImage, "png", someFile  );

新しい画像と同じ 高さ が異なる 画像の種類.

書画像の新しい画像を保存する画像をディスク。

のイメージの異なるタイプの値と参照だけが上がるようになるでしょう。もちろんなのトレードオフの関係の品質と高速になります。(いと思うしかしながら、お客様の問題はどこか他のもののみこと)

scroll top