Java - скриншоты, сделанные с помощью класса роботов, имеют разную сумму - PullRequest
0 голосов
/ 29 апреля 2018

Когда я использую класс робота, чтобы получить несколько скриншотов моего экрана, а затем преобразовать буферизованное изображение в байтовый массив, длины байтовых массивов меняются, иногда сильно. Должно ли это происходить? Мне кажется, что количество байтов на каждом изображении будет одинаковым.

Для фона я пытаюсь ускорить простую программу совместного использования экрана. Прямо сейчас я посылаю каждое изображение в виде полного байтового массива, который работает нормально (но медленно). Я хотел бы сохранить каждое изображение в буфере, а затем отправлять только изменения и индексы в байтовых массивах изменений от последнего изображения к следующему, сокращая данные, передаваемые через сокет. Это не работает, так как каждый скриншот имеет байтовый массив разного размера.

1 Ответ

0 голосов
/ 29 апреля 2018

Ваши скриншоты разных размеров, потому что они имеют разную степень сложности.

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

Формат PNG - это не просто массив (красный, зеленый, синий) данных с одной записью на каждый пиксель вашего изображения. Вместо этого формат сжимает данные изображения. Это означает, что (например) изображение, которое было только одним плоским цветом, было бы намного меньше, чем изображение, где каждый пиксель был другого цвета.

...