Lcd image converter как пользоваться

Обновлено: 05.07.2024

Назначение - создание изображений и шрифтов в формате исходников "C" (и не только) для встраиваемых приложений.
Промежуточные данные хранятся в формате XML, так что однажды созданный шрифт можно впоследствии доработать.
Преобразование в формат исходников осуществляется с помощью настраиваемых пользователем шаблонов, что позволяет, в некоторых пределах, получить нужный формат данных, под желаемый тип контроллера дисплея и распределение памяти.

  • Создание отдельного изображения;
  • Создание шрифтов (набор изображений - символов):
    • Включая кодировку юникода.
    • Монохромных, градаций серого и цветных;
    • С вертикальной и горизонтальной ориентацией байт;
    • 8, 16, 24, 32 бит данных;
    • 1. 32 бит на пиксел;
    • Сжатие RLE;
    • С различными контроллерами дисплеев, не ограничиваясь одной конкретной моделью.

    Графический редактор ЖК дисплеев (от wmclik)
    Тестовая программка для редактирования, создания, графических элементов, графити, шрифта и прочее.

    Калькулятор, редактор списка строк, графический редактор
    Помогите, кто чем может! Очень надо,хотя бы что то из этого сделать!

    Графический редактор
    Запуталась совсем что натворила (( Хотела создать что то вреде Paint но запуталась что творю . .

    Эко как Вас задело :D

    Витальич, лучше тему прикрепите :-[

    • установка точки указанного цвета;
    • поворот;
    • инверсия;
    • изменение размеров;
    • импорт/экспорт в файлы популярных форматов.
    • Поддерживает импорт из операционной системы, с указанием семейства, стиля, размера;
    • Выбор нужных символов, а не только целого диапазона;
    • Выбор кодировки (в том числе Юникод);
    • Моноширинность или пропорциональность;
    • Сглаживание (средствами прорисовки символов из операционной системы, применимо не ко всем шрифтам);
    • Сведение символов в одно изображение, если требуется такой формат хранения шрифта;
    • Подготовка;
    • Матрица;
    • Перестановка;
    • Изображение;
    • Шрифт;
    • Шаблоны;

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

    Перестановка.
    Позволяет изменить порядок бит уже после их выборки. Например, если линии данных дисплея на печатной плате были перепутаны.

    Изображение.
    Определяет формирование текстового результата преобразования - построчное разбиение блоков данных, размера блока, сжатие, порядок байт, префикс/суффикс/разделитель.

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

    Шаблоны.
    Здесь выбираются файлы шаблонов. Отдельно для шрифтов и изображений. В программу встроены 2 шаблона по умолчанию, в качесте примера. Они прописаны по умолчанию, но могут быть изменены.

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

    Файлы шаблона .
    Второе основное отличие от аналогичных программ.
    Представляет собой текстовый файл со специальными тегами $(имя_тега), взамен которых программа размещает информацию об изображении/шрифте.
    Пользователь может изменить этот файл под свои нужды и получить другой формат вывода, в том числе и для другого языка программирования, отличного от "C".


    LCD Image Converter — небольшая C++ / JavaScript / QT графическая утилита для создания изображений и шрифтов в формате исходников "C" для встраиваемых приложений.


    Краткая история (от автора приложения):

    2005-ом году, впервые столкнувшись с графическим дисплеем BG160160B и необходимостью выводить на нём текст, на скорую руку набросал утилитку для создания шрифтов под этот дисплей. Удобств в ней особо никаких не было, просто таблица символов и редактор изображения каждого из них. Результатом был «С» файл с массивами битов для монохромного представления. Некоторое время пользовался ей, да и забыл (хотя нашёлся кто-то, выложивший её на одном из форумов в Сети).

    — Через несколько лет появилась схожая задача, но уже с другим дисплеем — TIC154 на PCF8535. Дополнительно понадобилось переводить в формат «С» и изображения, а не только шрифты. Было решено написать новую программу с нужными возможностями, в том числе с изменяемым форматом выходного «С» файла и данными под разные контроллеры. Так родилась LCD Bitmap Converter, использовавшаяся, однако, в одном лишь только проекте, но речь не о ней.

    — Спустя некоторое время, когда я пересел с Windows на Ubuntu Linux и уже там писал софт под микроконтроллеры, на горизонте замаячил проект с новым дисплеем BP320240E на RA8835, а также несколько изменилось понимание этой задачи, появились новые идеи, требования, которые и привели в итоге к появлению на свет программы LCD Image Converter.


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



    Если нужно изображение, можно создать новое (введя название структуры данных), либо импортировать из существующего графического файла (bmp, gif, jpg, jpeg, png, pbm, pgm, ppm, tiff, xbm, xpm), изменить размер на нужный, внести необходимые изменения и сохранить файл форматов bmp, jpg, png, ppm, tiff, xbm и xpm.



    LCD Image Converter предлагает изменение состояния пикселей с помощью мыши (левая кнопка для цвета 1, правая для цвета 2), поворот (на 90, 180, 270 градусов), сдвиг, инверсия цветов, просмотр в редакторе в увеличении от 1 до 50 раз и редактирование с помощью внешнего редактора (например Gimp).



    LCD Image Converter позволяет создать шрифт на основе имеющегося в системе и редактировать его. Доступно изменение размера и инверсия всех символов (либо выбранных), поддержка Юникода, шрифт может отрисовываться как моношириный, либо пропорциональный, сглаживание шрифтов может отключаться и пр. Выбранные символы могут быть объединены в одно изображение, для выбранных символов применимы все функции редактора изображения, имеется предварительный просмотр шрифта, сохраняется шрифт в xml файле и может быть открыт позже для продолжения редактирования.





    Преобразование из массива байтов в исходник "C" осуществляется с помощью подстановки данных в файл шаблона. Этот файл является простым текстовым файлом с выделенными ключевыми словами. Можно использовать встроенные шаблоны, либо выбрать собственный файл шаблона в настройках (заданные настройки шаблона сохраняются при перезапуске). Преобразование нового документа так же можно выполнить в режиме командной строки (без использования GUI), используя заранее подготовленные настройки.

    Всем привет! В данной статье о LED матрице 16 на 16 адресных светодиодов мы создадим свой собственный шрифт, взяв за основу один из стандартных шрифтов Windows, и будем выводить на матрицу русскоязычный текст , в том числе в виде бегущей строки .

    Открываем программу Lcd image converter . О программе и основах работы с ней я рассказывал в прошлой статье . На стартовой странице нажимаем Новый шрифт .

    В списке Семейство представлены все установленные в системе шрифты. Например, выбираем стандартный шрифт Arial . Ниже можно выбрать Стиль шрифта и Размер . Главное, чтобы размер по ширине и высоте не превышал размер нашей матрицы, т.е. 16 пикселей.

    Нажав на кнопку Символы , находим в данном списке Cyrillic , с помощью Ctrl выделяем строки с русскими буквами и нажимаем кнопку Добавить выбранные . В верхней правой строке добавятся русские буквы. После этого можно нажимать OK.

    Чтобы получить универсальный шрифт, который будет подходить для матриц 8x8 светодиодов, а так же большинства LCD дисплеев, изменим размер шрифта до 9-го. Таким образом, высота большинства символов будет равна 7 и на матрице 16x16 мы сможем разместить текст в 2 строки. В начале, выделим все цифры и нажмем Шрифт -> В изображение . Получаем заготовку со всеми цифрами.

    Отмечаем, что каждая цифра имеет высоту 7 пикселей, а ширину 4 пикселя. Уменьшим размер изображения, нажав Изображение -> Изменение размера . Отсечем 2 пикселя сверху и снизу. И подкорректируем немного цифры: 0,2,4,5,6 и 9.

    Далее инвертируем изображение, так как фоновый цвет у нас должен быть черным, а цвет шрифта белым. После этого нажимаем Преобразование , затем идем во вкладку Изображение, как и прежде выбираем 24бита, а вот основное сканирование выбираем слева направо.

    Lcd image converter. Цифры в шестнадцатиричном формате. Lcd image converter. Цифры в шестнадцатиричном формате.

    Получаем код и вставляем его в таблицу Open Office . Работа с данными в виде таблицы с использованием встроенных инструментов Open Office и Excel значительно упрощает обработку больших массивов данных. Удаляем каждую пятую строчку кода. Она не несет полезной информации и служит только для отделения символов друг от друга. Шестнадцатиричное представление чисел заменяем на двоичное. «0x000000», заменяем на «0», а «0xffffff,» заменяем на «1». Удаляем лишние пробелы и получаем запись каждого столбца изображения в двоичной системе исчисления. Далее с помощью функции BIN2HEX() превращаем двоичный код в шестнадцатиричный. Добавляем столбец 0x и с помощью символа объединения & , получаем шестнадцатиричный код каждого числа. Вообще конечно можно было бы оставить и в двоичном представлении, но так компактнее. Превращаем всё в строку и переносим в наш скетч в заранее подготовленный массив для цифр.

    Таким образом, каждая цифра у нас занимает всего 4 байта памяти. Если бы мы оставили в 24 битном формате, то каждая цифра занимала бы 128 байт.

    С символами мы поступим ровно так же как с цифрами. А вот с буквами чуть сложнее. Размер букв очень сильно варьируется по ширине от 4-х (Б) до 9 пикселей (Ж). Примем ширину символа в 7 пикселей. Перерисуем некоторые буквы, чтобы они умещались в параметры 7х8.

    Далее с буквами производим те же манипуляции что и с цифрами.

    Полученный код букв, цифр и символов вставляем в заранее подготовленные элементы массива в нашем скетче.

    Таким образом, мы создали свой собственный шрифт и разместили его в очень компактном виде во флеш-памяти. Ссылка на сам скетч с готовым шрифтом в конце статьи.

    Для вывода статического текста на LED матрицу служит функция showText() .

    В аргументах функции showText() указываем: последовательность символов, положение левого верхнего угла выводимого текста и его цвет. Можно разместить 2 строки друг под другом. Размер текста позволяет.

    Если к этой LED матрице подключить еще одну и увеличить в настройках ширину матрицы до 20, и, следовательно, общее количество светодиодов увеличить до 320, то завершающая часть цифры 4 отрисовывается на второй матрице, а так же рисуется буква Г. Таким образом, можно соединять последовательно несколько матриц. Или сразу взять матрицу большей ширины.

    Для вывода текста в виде бегущей строки используем функцию runText() . В ней задаем: текстовую строку для воспроизведения, смещение по вертикали, цвет текста и скорость воспроизведения.

    LCD Image Converter программа для создания шрифтов и картинок для дисплеев.

    LCD Image Converter помогает создать изображения и шрифты в формате кода "C" (и не только) для вывода на дисплей.
    Промежуточные данные хранятся в формате XML, так что однажды созданный шрифт можно впоследствии доработать.
    Преобразование в формат исходников осуществляется с помощью настраиваемых пользователем шаблонов, что позволяет получить нужный формат данных под желаемый тип контроллера дисплея и распределение памяти.

    Программа LCD Image Converter кроссплатформенна, бесплатна.

    Видео инструкция от разработчика программы LCD Image Converter.

    Редактор изображений.
    Простейшие операции:

    • установка точки указанного цвета;
    • поворот;
    • инверсия;
    • изменение размеров;
    • импорт/экспорт в файлы популярных форматов.


    Редактор изображения очень простой, что-то типа Paint. Если понадобится сложное редактирование, можно настроить вызов внешнего редактора, типа gimp, через меню программы. Также, все эти функции доступны для каждого символа шрифта.

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

    • Поддерживает импорт из операционной системы, с указанием семейства, стиля, размера;
    • Выбор нужных символов, а не только целого диапазона;
    • Выбор кодировки (в том числе Юникод);
    • Моноширинность или пропорциональность;
    • Сглаживание (средствами прорисовки символов из операционной системы, применимо не ко всем шрифтам);
    • Сведение символов в одно изображение, если требуется такой формат хранения шрифта;

    Настройки.
    Так как в проектах можно использовать несколько различных индикаторов, настройки сгруппированы в предустановки, легко переключаемые через выпадающий список.
    Диалог настройки предустановок разбит на 6 частей:

    • Подготовка;
    • Матрица;
    • Перестановка;
    • Изображение;
    • Шрифт;
    • Шаблоны;


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

    Программа достаточно простая и разобраться с настройками не составит труда.


    Известная тема графических дисплеев — необходимость носить шрифты с собой.

    Задача:
    — IAR, STM32;
    — есть дисплей 128х64 OLED(монохром);
    — нужен один хороший шрифт с Кириллицей;
    — нужна приемлемая читаемость и размер;
    — нужна хорошая плотность записи на экране;
    — нужно вводить строки прямо в коде программы, не задумываясь над кодировками.

    Итак, начнём решать задачи.
    1) Дабы вводить строки прямо в программе определимся с кодировками. Решил проверить кодировки, а именно, понять как они проходят внутрь контроллера через компилятор.
    Пишем небольшой код:

    Запускаем код на контроллере, останавливаемся и смотрим получившиеся значения HEX в отладчике:


    Ищём в этих ващих интернетах g: 0xС0 for cyrillic A. Подсказывает, что это может быть кодировка Windows-1251. Смотрим кодировку исходников — Windows-1251, надеюсь это она. Проверяем.

    Открываем «Таблицу символов» (у меня Win7). Открываем какой-нибудь шрифт с Кириллицей. Внизу окна ставим галочку «дополнительные параметры», выбираем «Набор символов» — «Windows: Кириллица» (что соответствует кодировке Windows-1251). Теперь выбираем символы, для которых мы получили коды в отладчике, и смотрим их коды внизу окна. Совпадает! (Знаю, что я наркоман, можно было и в инете посмотреть таблицы, но вдруг такой способ кому-то когда-то сгодится.) Значит в память контроллера попадают строки в кодировке Windows-1251.

    2) Теперь нужно как-то создать шрифты и запихать их в память контроллера.
    Мне попалась под руку программа GLCD Font Creator.
    Программа позволяет
    — создавать свои растровые шрифты с нуля;
    — растеризовать существующие в системе Windows шрифты и модифицировать полученный результат;
    — создавать программное представление для хранения шрифтов в виде массивов.
    По хорошему, эти ребята ориентируются на различные, в т.ч. знакосинтезирующие индикаторы, у них своя библиотека. Но я хочу их попользовать в своих грязных делишках, не используя их библиотеку, и вообще облегчить всё в пределах разумной экономии места в памяти и моего времени.
    Открываем программу, выполняем File -> New Font -> Import An Existing System Font.

    Выбор пал на шрифт Verdana минимального размера, понравился он мне.

    Выбираем диапазон значений символов, которые хотим использовать (32-255). Нажимаем кнопочку возле «Remove», чтобы он самостоятельно не удалял пустые строки и столбцы, это мне не нужно.

    Получили шрифт размером 12x13.

    Если просмотреть все символы, видно, что отсутствует Кириллица и верхняя строка не используется в печатаемых символах, а 12 пикселей по высоте мне нравится больше, ибо 64/12 = 5 строк на дисплее. Удалим верхнюю строку, получим шрифт размером 12x12.

    Потом нажимаем полшебную клавишу «Export . » и получаем код на C:

    Выделяем и копируем оттуда только то, что нужно, то есть печатаемые символы. Вот кусок:

    Ок, кусок с печатаемыми латинскими символами мы отхомячили. Теперь нужно найти, где же символы Кириллицы.
    Как видим, в данном случае выбора кодировки нам не предоставили. Где же Кириллица?
    Есть подозрение, что используется Юникодный набор для растеризации. Идём в таблицу символов, находим там Юникодную Кириллицу, точнее её коды.

    0x0410 для буквы «А» и 0x044F для буквы «я», все буквы подряд. Создаём новый шрифт, с символами с 1040 (0x0410) по 1103 (0x044F).

    Бинго! Получили нужные символы.

    Преобразуем в код, получаем ещё один массив только для Кириллицы.

    Теперь обратимся к обработке данных шрифтов на контроллере.

    Для кодировки одного символа используется следующая строка:

    Теперь про обработку всего этого хозяйства процедурно.
    Латинские и специальные печатные символы (скобки, знаки препинания) начинаются от значения 0x20 (32 «для пробела») до 0x7E (126 «тильда»), можно конечно захватить ещё 0x7F («неразнывный пробел»), но оно нам надо? Мне нет — не буду включать сюда.
    Таким образом таблица для латинских и специальных символов будет содержать коды от 0x20 до 0x7E.

    Далее в нашей Windows-1251 до самой Кириллицы идут непечатаемые символы, а затем сама Кириллица от 0xC0 до 0xFF.
    Под неё сделаем вторую таблицу. Снова отрезаем верхний ряд пикселей, у «И краткой» немного шапочку съели, не умрёт, и так нормально…

    В массиве комментарии смешные, конечно не соответствующие действительным символам.

    Теперь сама процедура.
    Символы закодированы таким образом:
    — в первом байте лежит ширина символа, как мы ранее выяснили;
    — в следующих байтах лежат вертикальные столбцы пикселей, младшими битами к верху. Высота дополнена до полного количества байт. То есть для символа высотой больше 8 пикселей (и меньше 17ти) для каждого вертикального столбца будет задействовано два байта;
    — столбцы лежат друг за другом в порядке слева направо.
    Подправили «unsigned short» на «uint8_t» для шрифтов, ну и пишем процедуру вывода строки… Можно было использовать нуль-терминированную строку, но я почему-то не стал.

    Процедуры PutPixel(a, b); и ErasePixel(a, b); для своих дисплеев прописывайте сами, ибо у всех по-разному. У меня так:


    В коде не хватает проверки на корректность ввода, т.е. при вводе чего-то непечатаемого, оно пройдёт с ошибкой, то есть неправильно, ибо захапает какую-то левую память и всё нафиг может рухнуть. Доработать код можете и сами, но можно и меня попросить :)
    Ну вот и всё, выводим строки!

    Читайте также: