Java: сделать скриншот видимой области в браузере - PullRequest
0 голосов
/ 29 декабря 2011

Есть ли способ сделать снимок экрана в браузере на Java без окна браузера. Поток:

Загрузить веб-страницу в браузере. Затем выполните AJAX-вызов службы Java, которая делает снимок экрана с помощью кода из: Как сделать снимок экрана в Java? .

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

Спасибо

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Вы можете просто измерить, насколько велика отображаемая область, и захватить только этот раздел.

Что касается AJAX-вызова к сервису Java, часть невозможна.

0 голосов
/ 29 декабря 2011

Как уже упоминал @OscarRyz, вызов AJAX здесь не имеет значения. Вы должны создать Java-апплет, который вызывает new Robot().checkScreenCaptureAllowed(). Это захватит весь экран.

Проблема в том, как понять, где находится видимая область. Вы, вероятно, можете сделать это. Вы должны создать хотя бы один видимый элемент в вашем апплете. Этот элемент может быть даже очень маленьким (например, один пиксель), поэтому пользователь его не увидит. Затем вы можете вызвать getLocationOnScreen(), который дает вам абсолютную координату на экране. Если ваш Java-апплет находится в верхнем левом углу, это точка, где начинается ваша видимая область.

JavaScript позволяет узнать высоту и ширину текущего окна: window.innerWidht и window.innerHeight. Итак, теперь вы можете сделать снимок экрана и вырезать область, которая вам нужна.

Но учтите, что new Robot().checkScreenCaptureAllowed() проверяет READ_DISPLAY_PIXELS_PERMISSION, и я не думаю, что у вас есть такие разрешения для неподписанного апплета, поэтому вам придется подписать свой апплет.

Чтобы избежать этой проблемы, взгляните на это: http://html2canvas.hertzen.com/ - скрипт, который «захватывает» экран и использует только JavaScript.

...