Форум программистов, компьютерный форум CyberForum.ru

LZW - восстановление. LZW GIF. C++ - C++

Восстановить пароль Регистрация
 
lenston
2 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 33
25.11.2014, 18:22     LZW - восстановление. LZW GIF. C++ #1
Всем привет.. задача такая:

не могу понять, алгоритм декодирования LZW.. Необходимо как в этом примере
http://habrahabr.ru/post/127083/

НАПРИМЕР
Следующие 7 байт: <b>[84 62 18 2A 10 5D 00]</b>. Нужно перевести их в двоичное представление

[84] 10000100
[62] 01100010
[18] 00011000
[2A] 00101010
[10] 00010000
[5D] 01011101
[00] 00000000

Это коды, просто записанные подряд друг за другом. Но справа налево! Просто отсчитываем нужное количество бит справа и берем это число. А если байт закончился, то к уже частично полученному значению спереди дописываем число (с оставшимся количеством битов) из второго байта. На практике будет понятнее.
Мы узнали, что минимальная длина кода LZW в битах равна 2. Но нужно прибавлять еще 1, т.е. 3. Это означает, что текущий размер кода равен 3 и изначально именно по столько битов будем читать.

Краткое описание алгоритма:
Читаем очередной код.
В словаре, под номером равным коду, берем список индексов. Это готовые индексы цветов.
В словарь добавляется список индексов, взятый из словаря на предыдущем этапе с добавленным первым индексом взятый из словаря на текущем этапе.
<b>(100) 4.</b> В словаре под номером 4 расположен код clear. Значит инициализируем словарь, текущий размер кода устанавливаем равным 3 (в нашем примере конечно же). В файлах побольше этот код встречаться часто.
<b>(000) 0.</b> В словаре под номером 0 находится {0}, это уже готовый индекс цвета (левого верхнего угла). В словарь ничего не добавляем.
<b>(010) 2.</b> В словаре под номером 2 находится {2}. Добавляем {0}+{2} = {0,2} с номером 6 (далее я буду использовать запись покороче: 2:{2}, +6:{0,2})
<b>(001) 1.</b> В словаре под номером 1 находится {1}. Добавляем {2}+{1} = {2,1} с номером 7 (+7:{2,1})

В теории не очень понятно, а как это написать на С/С++ еще проблематичнее ))
Был бы рад, если бы кто-нибудь помог с этим ))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 18:22     LZW - восстановление. LZW GIF. C++
Посмотрите здесь:

C++ GIF-анимация
LZW C++ C++
C++ Builde C++, вставка GIF анимации.
C++ LZW сжатие
Разобрать GIF файл по пикселям и вывести в матрицу C++
C++ Чтение файла GIF. Перевод текста в HEX. Декодирование GIF анимации
Задержка кадров анимации gif C++
C++ LZW-алгоритм и бинарные файлы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru