высокое сжатие изображения - PullRequest
1 голос
/ 20 августа 2010

Я пытаюсь сделать "просмотрщик удаленного рабочего стола".Для этого мне нужно отправить рабочий стол пользователя - и это много информации для сокетов ... (особенно если разрешение высокое и информация может приблизиться к 5,3 МБ (1680X1050))

Поэтому я начал сжиматьс потоком GZIP и 5,3 МБ стало 500 КБ, затем я добавил свой собственный алгоритм сжатия (я думаю, что он называется RLE) - беря близкие пиксели и записывая его в формате 1), 256 >> 3 = 32 цвета (для красного, синегозеленый) и напишите, сколько пикселей подряд имеют одинаковый цвет.+ GZIP.

Это привело к тому, что сжатие составило в среднем 60 ~ 65 КБ - до 200 КБ, а также может быть меньше 5000, если экран полностью белый.

Теперь - подумал яеще не реализовали) про передачу разницы между каждым кадром - для каждой строки я пишу, где начинается разность (между пикселями) и какова разница.ну, это может помочь - может быть, я мог бы получить в среднем 30 КБ за каждый кадр.но для сокетов это много.

кто-нибудь когда-либо удавалось решить эту проблему?(и как конечно ...)

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Существуют стандартные алгоритмы сжатия изображений: например, JPEG.

Дальнейшая оптимизация заключается в том, чтобы узнать что-то об изображении: например, на рабочем столе стандартные элементы, такие как кнопка «Пуск» Windows, а также различные значки приложений и виджеты в строке заголовка, являются стандартными: поэтому вместо отправки значений пикселей, Вы можете отправить их логические идентификаторы.

Да, люди справились с этой проблемой: люди, которые пишут программное обеспечение для удаленного рабочего стола, включая VNC с открытым исходным кодом.

0 голосов
/ 20 августа 2010

Вы можете просмотреть исходный код VNC .

Большинство серверов VNC реализуют несколько различных форм сжатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...