Jump to content

    

Сжать битовое представление больших текстовых символов

17 минут назад, AlexandrY сказал:

Вот такой символ 

Так что не ведитесь на RLE и им подобные. 

Спасибо за программу рисования шрифта! Помогает.
А шрифт у меня не такой вычурный будет.
Само сжатие пока под вопросом. Где про sixpack алгоритм почитать?

Share this post


Link to post
Share on other sites
11 minutes ago, ViKo said:

Спасибо за программу рисования шрифта! Помогает.
А шрифт у меня не такой вычурный будет.
Само сжатие пока под вопросом. Где про sixpack алгоритм почитать?

https://github.com/Grumbel/rfactortools/blob/master/other/quickbms/src/compression/sixpack.c

В массиве copybits 6-й элемент можно убрать и оставить размер массива 5. 
Это не ухудшит сжатия, но сильно сэкономит память.

Share this post


Link to post
Share on other sites

Что-то программа от Микроэлектроники ничего не сохраняет. Она бесплатная? Жму сохранить, спрашивает, куда, что... Выполняет. А файлов нет. 

Share this post


Link to post
Share on other sites
1 час назад, AlexandrY сказал:

pkzip сожмет в два раза с 288 байт до 135. 
И маленький скромный алгоритм sixpack сожмет до 139  

Но с pkzip и прочими подобными архиваторами теряется смысл сжатия, потому что с ними вряд ли получится хранить символ сжатым и разжимать только при отображении. Придётся разворачивать шрифт в ОЗУ, а это уже не экономия, а наоборот. Хотя если ОЗУ много, а ПЗУ мало, тогда нормально.

Share this post


Link to post
Share on other sites

Предлагаю использовать архиватор Дениса Попова, кто помнит тот поймет. :-)

Share this post


Link to post
Share on other sites
1 час назад, Lagman сказал:

Предлагаю использовать архиватор Дениса Попова, кто помнит тот поймет. :-)

Ток не Попова, а Бабушкина:biggrin:

Но этот архиватор работает только под болдженосом:biggrin:

Share this post


Link to post
Share on other sites
On 5/15/2020 at 10:28 AM, ViKo said:

Какой алгоритм сжатия символов в шрифте здесь можно применить, попроще?

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

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

И вообще, дайте Ваш текущий набор символов, я хочу поглядеть на него.

Share this post


Link to post
Share on other sites

Набора еще нет. Цифры, размер 48 х 30 (+ слева и справа по пустому столбцу, итого 32). Толщина вертикальных линий 6 пикс, горизонтальных 4. 

Редактор растрового шрифта посоветуйте. Кодировать не надо, только внешний вид прикинуть. 

14 часов назад, Arlleex сказал:

Ток не Попова, а Бабушкина:biggrin:

Но этот архиватор работает только под болдженосом:biggrin:

О чём идёт речь? 

Share this post


Link to post
Share on other sites
53 минуты назад, ViKo сказал:

Редактор растрового шрифта посоветуйте.

Вот что у меня занычено. Это с какого-то германского сайта, сейчас ссылку не смог найти.

FontEditor.zip

Share this post


Link to post
Share on other sites
1 час назад, ViKo сказал:

Редактор растрового шрифта посоветуйте.

А зачем? Неужто ничто из Windows\Fonts не подходит?

Share this post


Link to post
Share on other sites
16 hours ago, Arlleex said:

Ток не Попова, а Бабушкина:biggrin:

Попов тоже предлагал, насколько я помню, у него смысл был в том, что данные в бинарном виде представляют "0" и "1" и вот все нули сжимать в 0, а все единицы в 1, только как потом все разархивировать он не уточнял :-)

Share this post


Link to post
Share on other sites
13 часов назад, ViKo сказал:

Редактор растрового шрифта

Не только отредактирует но и сформирует готовые си файлы в разных вариантах. Высылают Линк на почту, денег не просят.

https://www.riuson.com/lcd-image-converter

Share this post


Link to post
Share on other sites

За редакторы - спасибо. Буду пробовать. 

Я тем временем теоретически ужиматель придумал. Кодирую символ в виде набора строк. Строки кодируются числами 128 - 255 (128 видов строк, думаю, хватит на любые символы, реально будет намного меньше). Числа 3 - 127 задают количество строк с одинаковым кодом (многие строки повторяются), задаются перед кодом строки, если нужно. Число 0 задаёт конец строк символа. 1 и 2 - можно в качестве количества строк использовать, но нет смысла. Может, для чего-то иного. Например, инвертировать строку (заменить нули на единицы) или обратить (рисовать задом наперёд). 

Вот как саму 32-битовую строку сжать, простого алгоритма не изобрёл. 

Share this post


Link to post
Share on other sites
42 минуты назад, ViKo сказал:

Вот как саму 32-битовую строку сжать, простого алгоритма не изобрёл. 

А зачем простой алгоритм на сжатие? Вам же вроде для распаковки нужно было. А сжимать можно не спеша, сложным алгоритмом.

И чем не подошли те алгоритмы, которые я описывал? Там вроде всё просто должно было получиться.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now