оптимизация кода картинок и иконок
- Войдите на сайт для отправки комментариев
Втр, 28/11/2017 - 20:55
Завис я на рисовании иконок для своего радиоприемника на Арудино НАНО и si4703, библиотека u8g. OLED дисплей сине-черный. Мне показалось наиболее удобным рисовать попиксельно. Но вот возникла мысль... описывая каждый пиксель в скетче двумя параметрами x и y, не трачу ли я почем зря память ардуинки? Что занимает меньше памяти, drawpixel или drawcircle, drawline? Может действительно стоит замарочиться и рисовать кружки и линии, для уменьшения размера кода? но то что мы видим много строк в скетче не означет, что машинного кода будет такое же количество... Кто может подсказать?
ну вообще-то никто не хранит каждый пиксель в виде пары x и y. - обычно рисунки хранят целиком в виде пиксельной матрицы, примерно так же, как кодируются буквы в экранных шрифтах
да, я видел хранят в матрице. пока не смог дойти, как это сделать правильно в u8g. Поэтому сделал вот так... Но вопрос в другом. Экономлю ли я память, если использую кружки, фреймы и полоски, чтобы нарисовать рисунок? или не важно как я нарисовал, батарейку по точкам, указав каждую или использовав линии?
ну вот например батарейка без полосочек наполненности у меня в скетче выглядит так:
скорее всего, в виде готовых примитивов будет некоторый выигрыш, но вряд ли существенный. Повторюсь - вам надо кодировать картинки в виде матриц - так вы выиграете в разы больше, чем с помощью линий и кривых. Например, ваша "батарейка" в виде матрицы займет всего 14 байт.
2 вопроса. как эту матрицу вставить в нужное место на экране? и где ее хранить :) если есть пример... буду рад ссылке...
а! и еще важный момент... моя батарейка интегрирована в код-вольтметр. палочки выводятся в зависимости от напряжения на А0 контакте... вот :) стоит несколько условий if, в каждом условии свой диапазон вольтажа, и свои пиксели для вывода... сможет ли матрица сделать тоже самое?)
а! и еще важный момент... моя батарейка интегрирована в код-вольтметр. палочки выводятся в зависимости от напряжения на А0 контакте... вот :) стоит несколько условий if, в каждом условии свой диапазон вольтажа, и свои пиксели для вывода... сможет ли матрица сделать тоже самое?)
в таких случаях оказывается проще либо предусмотреть несколько матриц. либо просто хранить их частями.
2 вопроса. как эту матрицу вставить в нужное место на экране? и где ее хранить :) если есть пример... буду рад ссылке...
повторяю - практически в любом фонте символы хранятся в виде матриц. Когда вы печатаете букву - вы сообщаете библиотеке, какую матрицу взять и в каком месте экрана ее вывести. Так что лучший пример 0 это библиотеки работы с экраном. Кстати, в этих библиотеках часто есть и функции вывода картинок.
может я и не прав но идея такая...
интересное решение :) программерское. но это так неудобно :( потом поправить сложнее мне кажется. нет ли какой-то программы, чтобы в ней на компе нарисовать мышкой, и получить на выходе оптимизированный код? в виде drawpixel или в похожем как у вас изящном виде? я рисовал все иконки на скриншоте на глаз))) внес пару пикселей, загрузил код... посмотрел))) долго... неудобно...
Гугел выводит вот сюда: https://geektimes.ru/post/254998/ , в первых камментах наводка.
del