Генератор изображений (устарела)
Перейти к новой версии статьи и программы.
Данная программа предназначена для генерации массива изображения для графических дисплеев. Она может генерировать изображения кратные 4х8, максимального размера 84х48.
Выведенное изображение (дисплей nokia3310)
В более ранних статьях был рассмотрено, как работать с графическим дисплеем от нокии 3310, также была размещена программа для генерации шрифтов. Но этот дисплей в первую очередь графический и не рассмотреть, как можно вывести на него картинку – это не раскрыть большую часть его потенциала. Для восполнения пробела была написана небольшая программа для генерации массива, содержащего изображение, для последующего вывода на дисплей.
Рабочая область программы поделена на 3 части: редактор рисунка, конечный массив изображения и вставка изображения.
Последняя вкладка программы содержит средства для вставки точечного рисунка (*.bmp). Размеры конечного изображения задаются на первой вкладке. Ползунок «граница чёрного и белого» позволяет выбрать точку перехода этих цветов при преобразовании рисунка в монохромный. После нажатия кнопки «применить» картинка будет отправлен в редактор рисунка.
Добавление изображения
Редактор рисунка позволяет посредством мыши рисовать и (или) редактировать изображение, также иметься уменьшенная его копия для наглядности. Для большей универсальности программы – она позволяет задавать размер изображения кратный 4х8 с максимальным разрешением 84х48. После того как рисунок будет готов достаточно нажать на кнопку «Получить массив», как программа сгенерирует массив, содержащий изображение, готовое к вставке в прошивку.
Редактор рисунка
Ниже приведён кусок программы, содержащий массив с рисунком, рассмотренном в примере, и код для его вывода на дисплей.
static const char lcd_image_mas[504] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x3C, 0x38, 0x7C, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xE0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x1F, 0x17, 0x17, 0x37, 0xF7, 0xF7, 0xFF, 0xEF, 0xEF, 0xFF, 0xEF, 0xAF, 0x17, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x2A, 0x3E, 0x00, 0x0E, 0x08, 0x3C, 0x00, 0x14, 0x08, 0x14, 0x00, 0x0E, 0x08, 0x3C, 0x00, 0x3E, 0x2A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x14, 0x14, 0x7C, 0x00, 0x7C, 0x40, 0x40, 0x00, 0x7C, 0x54, 0x44, 0x00, 0x6C, 0x10, 0x6C, 0x00, 0x10, 0x10, 0x10, 0x00, 0x7C, 0x54, 0x44, 0x00, 0x6C, 0x10, 0x6C, 0x00, 0x7C, 0x54, 0x45, 0x01, 0x40, 0x00, 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, 0x7C, 0x54, 0x44, 0x00, 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00, 0x40, 0x00, 0x7C, 0x14, 0x28, 0x40, 0x00, 0x3C, 0x40, 0x40, 0x7C, 0x40, 0x00}; void lcd_image() { char x,y; for(y=0;y < 6;y++) { lcd_gotoxy(0,y); for(x=0;x < 84;x++) lcd_send(lcd_image_mas[y*84+x], LCD_TDATA); } }
Если размеры изображения будут отличаться от 84х48 – в функции lcd_image() нужно будет указать своё количество точек по горизонтали и количество линий по вертикали.
Alex_EXE | 14.01.2011 | Программы |
Андрей пишет 21.09.2011 в 15:21 #
Спасибо за программу! Очень помогла!
Alex_EXE пишет 24.11.2011 в 00:30 #
Для тех, у кого проблемы со скачиванием файлов.
Архив скачивается с сайта нормально, не битый, если возникают ошибки при распаковки, попробуйте обновить архиватор.
Павел пишет 03.12.2011 в 12:55 #
Добрый день. Пользуюсь активно Вашей программкой — очень доволен. Реально удобно. Есть только одна просьба, в последнее время чаше начал использовать LCD от 1110, а она 96х68(и думаю не я один). Возможно ли расширить пределы? Спасибо.
Alex_EXE пишет 04.12.2011 в 00:06 #
Расширить функционал программы можно, начало положено, но когда будет конец, точно пока сказать не могу.
Павел пишет 05.12.2011 в 02:21 #
Лиха беда-начало. 🙂 Будем ждать с нетерпением.Спасибо.
Юрий пишет 11.09.2017 в 02:21 #
Добрый день. Ответьте пожалуйста, можно ли использовать обе Ваши программы для редактирования готового массива с рисунком, взятым из другой программы? Просто иногда хочется подкорректировать готовое изображение. Заранее благодарю.
Alex_EXE пишет 22.09.2017 в 18:02 #
Программы могут только генерировать массивы, функции открытия редактирования готовых массивов данных в них нет.