Комментарии 18
Рад, что код Хаффмана с первого курса профильного университета помогает автору писать отличные статьи!
А что это за место такое, куда нельзя принести libpng?
Устройства из экосистемы Xiaomi Vela. Там приложения пишутся на упрощенном Vue.js, так что libpng может и можно принести, но слинковать с приложением или запустить как-то иначе не получится.
Собрать libpng через Emscripten?
Библиотека fast-png, кажется, решает проблему, но она избыточна и использует классы, которых нет в целевом интерпретаторе.
Так для избавления от классов её можно при помощи Babel обработать или сразу указать Тайпскрипту целевой стандарт es5.
Так уж получилось, что мои познания в JS меньше, чем умение строить велосипеды. В конце концов, эта статья про разбор png, а не про попытки поладить с малознакомой мне платформой на не сильно знакомом мне языке =)
Но ваш комментарий, я, безусловно, приму к сведению. Благодарю!
Чел, серьезно? Там ядро имеет либы png в составе, если вот тебе что то нужно по NuttX и HyperOS на IoT, пиши не стесняйся, зачем там вообще кодировать .png, когда там нативный формат всего lvgl изображения. Вообще не проблема интегрировать API хоть в JS движок, хоть в LUA, если совсем уж прям хочется в задний вход залезть.
Вот это поворот.
Я работаю с Mi Smart Band 9, потому что на 4pda какое-то нереальное запустение на тему приложений, только перезаливы с китайских форумов. У самого «семерка», но ей в плавности до «девятки», конечно, далеко. А хочется плавность девятки и софт как на семерке, поэтому потихоньку наскребаю порты легенд.
Насколько я понял, quickapp'ы, которые rpk-приложения, очень ограничены. У них есть набор интерфейсов, но и те как-то через пень-колоду сделаны. Чтение файлов, там, например, не open/read/write/close, а отдельный метод, который по имени файла считывает нужное количество байт с нужного оффсета. Так что побайтовое чтение там вряд ли реализуемо в нормальном понимании этого словосочетания. И такого много, поэтому я хз, как из JS-окружения дёргать что-то внутри ОС и до сего момента были сомнения в том, что это вообще возможно.
Я буду рад, если вы скажете, что я не прав, и эти приложения могут больше, чем кажется на первый взгляд. Что-то вроде тулбокса с семерки было бы очень приятно иметь.
Я видел «магические» циферблаты, которые могут удалять приложения и с них вышел на ваш репозиторий с EasyFace и lua-скриптами в циферблатах, которые имеют доступ к ОС. Но циферблаты, на мой взгляд — это не то.
Можете более подробно раскрыть мысль про либы png? Это нативные библиотеки и их как-то можно вызывать из JS? Или это какие-то недокументированные JS-библиотеки?
Если нужно без всяких зависимостей, то есть например lodepng: https://github.com/lvandeve/lodepng
Спасибо что хоть кто-то ещё пишет статьи о том как сделать что-то самому.
Про jpg тоже есть публикации?
А еще есть на youtube классный ролик КАК УСТРОЕН PNG-ФАЙЛ? https://www.youtube.com/watch?v=e4vMlLbYHWI
IEND — Image END. Занимает 0 байт.
4 байта все-таки)
Записываем PNG без мам, пап и внешних библиотек