Робот Java createScreenCapture производительность

Вам нужно получить абсолютный путь и использовать его для ссылки на нужный файл. Java предоставляет FileSystem для помощи. Добавьте путь к файлу после получения абсолютного пути.

import java.io.ObjectInputStream;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.nio.file.FileSystems;

class FileRead {
  public static void main(String[] args) {
    try {
        String filePath =
        FileSystems.getDefault().getPath(".").
        toAbsolutePath()+"/Practice/Stack";
        File file = new File(filePath,"test.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        String st; 
        while ((st = br.readLine()) != null) {
            System.out.println(st); 
        }
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println(e.getMessage());
    }finally{}
  }
}
12
задан Hamza Yerlikaya 15 March 2009 в 05:18
поделиться

2 ответа

Я предложил бы идти с C или C++ для этого, он имеет намного более прямой доступ к аппаратным средствам.

Если Вы хотите производительность абсолютного максимума, переходят к уровню драйвера и просто берут данные непосредственно видеокарта. Трудно найти драйвер как это, потому что это могло использоваться для легкого нанесения поражения любой защите от копирования, так как это захватывает данные, когда это идет в экран.

Но если необходимо придерживаться Java и Робота, действительно ли Вы уверены, что это - просто этот вызов функции, который занимает много времени? Это не выделяет BufferedImage или что-то еще?

2
ответ дан 2 December 2019 в 23:43
поделиться

Попробуйте экспериментировать с различными настройками экрана. Глубина цвета повлияет на него, так как AWT должен преобразовать все в обычный растровый формат.

Некоторые примеры времени с моего ПК:

 Resolution | Depth | Time taken 
------------+-------+------------
 1280x1024  | 32    | 215ms
 1280x1024  | 16    | 155ms
 1600x900   | 32    | 235ms

Мой адаптер не может сделать 24BPP или 64BPP, поэтому я не мог проверить этими глубинами, но я догадаю, что им потребует больше циклов ЦП для преобразования.

2
ответ дан 2 December 2019 в 23:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: