2

画面上の画像の小さなセクションを取得し、任意のピクセルを読み取って他のピクセルと比較しようとしています。画面画像を取得するコードは次のとおりです。

Rectangle captureSize = new Rectangle(x, y, height, width);
BufferedImage image = robot.createScreenCapture(captureSize);

そして、私が使用したピクセルごとに読み取るために

  for (int y = 0; y < image.getHeight(); y = y + 1) {
        for (int x = 0; x < image.getWidth(); x = x + 1) {
            color = image.getRGB(x, y);
            // Some methods etc
        {
{

しかし、それを実行したとき、私はショックを受けました。createScreenCapture40 ミリ秒getRGBかかり、各ピクセルの使用には約350 ミリ秒かかるため、60 fps のアプリケーションを作成するには非常に非効率的です。ちなみに、私の画像は800x400ピクセルサイズです。私は試しませんでした

rgbArray = image.getRGB(startX, startY, w, h, rgbArray,offset, scansize) ;

なぜなら、それがどれほど効率的かがわからず、コードを並べ替えるのは少し難しいからです。ですから、どんな助けでも大歓迎です。

4

1 に答える 1

1

使用する

rgbArray = image.getRGB(startX, startY, w, h, rgbArray,offset, scansize) ;

メソッドを呼び出して各ピクセル値を取得するよりも、配列からピクセル値を読み取る方がはるかに高速であり、配列を取得するための getRGB への 1 回の呼び出しは遅くありません。

于 2011-07-19T18:28:39.927 に答える