Задать вопрос
@klaxwork

Сравнение двух изображений и передача разницы по сети или передача каждый раз нового изображения?

Есть клиент-серверное приложение, передающее с сервера на клиент скриншот экрана.
Вопросы:
1. Можно ли как-то упаковать изображение, чтоб оно весило меньше и имеет ли это смысл?
2. Есть ли возможность как-то сравнить 2 изображения, найти разницу и как-то ее передать по сети, чтоб на принимающей стороне только внести эту разницу в предыдущее изображение?
Т.е. Берем первый скриншот, передаем его с сервера на клиент. К примеру, он весит пару мегабайт. (jpeg качества 100 с разрешением 1920х1080).
Берем второй скриншот, сравниваем его с предыдущим, находим разницу (передвинули курсор, напечатали букву, нажали кнопку в какой-либо программе и т.д., что отобразилось на экране), передаем эту разницу на клиент и там в предыдущий скриншот вставляем эту разницу, чтоб получилось то, что было на сервере.

Что будет быстрее, найти эту разницу и передать и потом восстановить на клиенте, или просто отправлять изображения с ухудшением качества, к примеру, до 50... А то и меньше. При передаче по сети, главное, чтоб объем передаваемых данных был меньше

Где-то я читал, что таким образом действуют видеокодеки при обработке фильмов. Т.е. не сохраняют каждый кадр, а фактически имеют только изменения кадров, которые и прорисовываются, если есть определенная разница между кусками изображения. От этого на сценах с медленным движением камеры быстро движущиеся изображения отрисовываются нормально, а фон, который двигается очень медленно - как будто перескакивает, если смещается на определенную величину. Таким образом размер видеофайла становится намного меньше, чем если бы сохранялся каждый кадр отдельно.
  • Вопрос задан
  • 21 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Да, можно упаковать сжатием как без потерь так и с потерями. Да, можно передавать только изменившуюся часть картинки. Что именно будет быстрее - зависит от оборудования, канала, эффективности реализации алгоритмов. Но обычно именно передача только части изображения будет быстрее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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