Javascript клиент-сжатие данных - PullRequest
9 голосов
/ 12 февраля 2010

Я пытаюсь разработать приложение для рисования кистью через processingjs. Этот API имеет функцию loadPixels () , которая загружает значения RGB в массив. Теперь я хочу сохранить массив на сервере БД.

Проблема в размере массива, при преобразовании в строку размер составляет 5 МБ.

Является ли лучшим решением сделать сжатие на уровне JavaScript? Как это сделать?

Ответы [ 2 ]

8 голосов
/ 12 февраля 2010

См. http://rosettacode.org/wiki/LZW_compression#JavaScript для примера сжатия LZW. Лучше всего работает на более длинных струнах с повторяющимися узорами.

Из статьи Википедии на LZW:

Словарь инициализирован, чтобы содержать односимвольные строки соответствует всем возможным ввод символов (и ничего больше кроме кодов очистки и остановки, если они используются). Алгоритм работает путем сканирования через вход строка подряд дольше подстроки, пока он не найдет тот, который нет в словаре. Когда такой найдена строка, индекс для строка меньше последнего символа (т.е. самая длинная подстрока, которая находится в словарь) извлекается из словарь и отправлены на выход, а новая строка (включая последнюю символ) добавляется в словарь со следующим доступным кодом. Последний вводимый символ затем используется в качестве следующая отправная точка для сканирования подстроки.

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

1 голос
/ 23 ноября 2010

Реализация JavaScript в Gzip содержит несколько релевантных ответов.

Кроме того, Javascript LZW и Кодирование Хаффмана с PHP и JavaScript и другие реализации, которые я нашел.

...