Как сделать рамку для вебки самому

Обновлено: 06.07.2024

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

Как добавить фоторамки

Шаг 1

Загрузите изображение, которое хотите поместить в рамку. Дождитесь завершения загрузки и переходите к следующему шагу.

Добавить рамку

Выберите из множества доступных рамок и настройте их перед добавлением к изображению. Сохраните результаты

Шаг 3

Сохраните изменения и загрузите изображение в рамке. Не забудьте поделиться результатом с друзьями

Посмотреть все инструменты

Изменить размер изображения

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

Обрезать изображение

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

Отразить изображение

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

Повернуть изображение

Поворот изображения - основная функция любого фоторедактора. И вы можете использовать это онлайн. Вы можете вращать изображение влево и вправо, выбирать угол поворота. Все это очень удобно и просто в использовании.

Фото фильтры

Фотофильтры быстро и незаметно ворвались в нашу жизнь с появлением смартфонов. С тех пор стало трудно представить, что кто-то разместит фотографию в Интернете без предварительной обработки. Такие известные приложения, как Instagram или Prisma выпустили свои фотофильтры, которые приобрели большую популярность. Все они доступны вам в нашем редакторе с фотофильтрами.

Рамки для фотографий

С помощью нашего редактора вы можете быстро и легко вставить фотографию в рамку онлайн прямо в окне браузера. Фоторамки - праздничные, романтические, тематические, множество очаровательных рамок для любимых фотографий. Добавление рамок для фотографий - отличный способ привнести яркие детали в ваш день, удивить, порадовать близких и друзей.

Фото наложения

Наложение текстуры на цифровое изображение делает работу более интересной. Благодаря текстуре вы можете добавить глубины изображению, которое выглядит полностью плоским, а также добавить органичности. С помощью удобного редактора вы можете применять текстуры и добавлять тени к определенным областям вашей работы, не ухудшая цвета и формы вашего рисунка.

Эффект виньетки

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

Добавить клипарт

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

Добавить текст к фото

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

Размытие изображения

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

Скругление углов

Закругление углов на фотографиях - довольно распространенная операция при редактировании изображений. Люди закругляют углы картинок по разным причинам - для использования на сайтах, в социальных сетях, для создания открыток. В любом случае наш инструмент позволит вам это сделать без проблем.

Тилт Шифт

канва рамка

Как в Canva вставить фото в рамку

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

Посмотрите видео, чтобы лучше понимать, что и как происходит.

инструменты для редактирования в Канва

Чтобы заменить картинку на другую просто перетащите новую на место старой, замена происходит автоматически.

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

Изменение размера рамки в Канва

Как в Канве сделать рамку для фото

Как же быть, если нужна рамка определенных размеров, например, вытянутый прямоугольник? Что делать, если таковой не найдется в библиотеке Рамок?

У Канвы множество инструментов, которые позволят это сделать самостоятельно. Давайте расширять собственные возможности!

Как сделать рамку в канве самому: прямоугольная рамка любых пропорций

Сетка в Canva

Я использую Сетки. Показываю по шагам.
Открываю вкладку Элементы и затем СЕТКИ. И вставляю в макет сетку самую первую, на одну ячейку.

Меняю соотношение сторон так, как мне необходимо. Для этого есть маркеры на каждой стороне.

маркеры в Канве

Копирую (дублирую) сетку. То есть получаю копию точно такого же размера.

Дублирование сетки в Канве

Сдвигаю дубликат немного в сторону для удобства работы. Меняю изображение на цвет, который задумала для рамочки.

Смена фото на фон

Зажимаю SHIFT на клавиатуре и немного растягиваю полученный прямоугольник, чтобы получился немного больше исходника, но с тем же соотношением сторон.

растягиваю прямоугольник в Канве

Смена расположения в Канва

Очень помогают тонкие розовые линии, которые появляются на картинке тогда, когда центр нижнего слоя точно совпадает с центром верхнего.

Получили фото в тонкой рамке.

Фото в Канве

Как изменить размер картинки с рамкой

Если нужно изменить размер подложки, чтобы окантовочная рамка стала больше или меньше, нужно сначала выделить нижнюю фигуру и затем потянуть за ее маркеры. Сложность только в том, что иногда трудно кликнуть именно по рамке, если ее линия слишком тонкая.

В этом случае я увеличиваю масштаб просмотра, выделяю рамку, меняю размер и вновь возвращаюсь к рабочему масштабу.

Как сдвинуть картинку с рамкой одновременно

Но ситуация не безвыходная. Обойдемся и без встроенной группировки.

Пошагово это делается так:

  1. Выделите рамку (нижний слой).
  2. Нажмите на клавиатуре SHIFT.
  3. Кликните по картинке.
  4. Отпустите SHIFT.

Вы увидите, что картинка и рамка обе выделены. Об этом говорят тонкие голубые вспомогательные линии. Одна выделена пунктиром, а другая – сплошной.

Выджелены в Канве

Теперь можете двигать сколько угодно до тех пор, пока опять мышкой не кликните где-то в другом месте макета либо вновь не нажмете SHIFT, разъединяя рамку и картинку.

Как в Канве сделать рамку для текста или для видео

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

Вместо картинки в верхнюю сетку также легко вставить видео.

Урок по работе с роликами найдете в статье «Как сделать видео в Канве для соцсетей«. А также вам в помощь и соответствующий ролик, смотрите, применяйте!

Я думаю, что для тех, кто работает в Канве, но изучил еще не все ее возможности, этот урок будет полезен.

Начинающим советую посмотреть другие более подробные уроки, которые собраны в одном плейлисте на Ютубе и здесь на сайте в одной рубрике.

Хороший способ подчеркнуть происходящее в кадре – добавить рамку к снятому видеоклипу. Если это будет обычная белая рамка, то вы получите эффект сувенирной открытки. А если выбрать рамку фантазийную: в виде рамы картины, цветочной гирлянды, морских ракушек или новогодних огней – то можно задать в вашем видео любое настроение. Найдите подходящую программу для монтажа, и все получится просто и быстро. Здесь мы расскажем, как сделать видео в рамке в Movavi Видеоредакторе. Он сочетает большой набор инструментов с простотой их использования.

Рассмотрим, как вставить видео в рамку двумя способами: с использованием готового анимированного шаблона и при помощи создания простой рамки – цветной каймы по краям кадра. Для этого скачайте программу Movavi Видеоредактор, установите ее на компьютер и запустите, затем выполните шаги ниже.

Как наложить рамку на видео с помощью шаблона

Импортируйте файлы в программу

Кликните на Добавить файлы и из папок на компьютере добавьте в программу видеоклип и рамку, в которую хотите вставить видео.

Если это рамка из пакета эффектов Movavi, то откройте раздел Рамки и перетащите нужную на монтажный стол.

Привет! Меня зовут Игорь, я работаю Frontend-директором в компании Wrike. В этой статье хочу поделиться историей создания моего пет-проекта и рассказать, как я сделал электронную фоторамку и написал для нее софт на Flutter, столкнувшись по пути со всеми возможными сложностями.

У меня в телефоне копится много снимков, к которым я потом очень редко возвращаюсь и забываю про них. Поэтому я решил, что было бы круто сделать фоторамку. Но я хотел, чтобы рамка получилась не такая, как у всех, а особенная. Я же программист. Тогда мне казалось, что все будет просто: прикрутил, приклеил, и готово. Но в итоге все оказалось не так радужно, как я задумывал.

Идея и первые трудности

Я набросал спецификацию и решил, что рамка должна получать данные из Google Фото и отключаться, когда никого нет рядом.

Недолго думая, заказал Raspberry Pi 3 и дисплей с драйвером. Скачал спецификацию и нашел рамку с нужной глубиной.

В рамку должен был поместится Raspberry Pi и дисплей

Составил план действий — тогда мне казалось, что осталось только написать код.

Мой план на тот момент выглядел так. Все круто: дисплей есть, Raspberry Pi работает, осталось написать код

Но не тут то было. Меня осенило: я купил не FullHD экран с разрешением 1920*1080, а WQXGA с чуть большим разрешением — 2560*1600. А Raspberry Pi — это же не полноценный компьютер. Если сравнить его с Core i7, то у последнего виртуальный коэффициент скорости — 5199.98 BogoMIPS, а у Raspberry Pi — всего 108.00. И тогда я понял, что он вообще, возможно, не способен показывать такие огромные картинки. К тому же по спецификации Raspberry Pi не поддерживает подобные дисплеи.

Но я быстро нашел решение этой проблемы — вьюер feh, который отлично работает: выводит 2К картинки и даже слайд-шоу. Но, конечно, никакой анимации и плохая рандомизация: одну картинку можно было увидеть 5 раз. Но главное — вывести картинки было можно. Это меня успокоило.

Выбор технологии и разочарование

Теперь мне оставалось только выбрать инструмент. Я выделил такие критерии отбора:

Легко делать визуальные эффекты

Можно делать UI

Вот так выглядел мой шорт-лист:

Начал с С++. Вьюер feh лежит в опенсорсе. Почему бы просто не поменять его код? Я скачал, все было круто, но было одно НО: UI, эффекты и еще много всего нужно было делать вручную.

Все, с кем я обсуждал проблему, советовали взять Skia или OpenGL. Но я уже пытался писать трехмерные движки и знал, что совмещать OpenGL с Raspberry Pi — это плохая идея. Raspberry Pi официально поддерживает только OpenGL|ES, и то с большими оговорками.

Тогда я решил пойти дальше.

Рассмотрел Go и Python. Go быстро работает и может компилироваться в native. Но меня удивило, что там нет UI-библиотек. Зато есть биндинги к Flutter Desktop: нужно писать на Go, а UI выводить через Flutter. От языка меня тогда немного мутило: он очень специфичный, хотя действительно простой и быстрый.

В Python много библиотек, но нет native. Это сразу меня остановило от его выбора, потому что Raspberry Pi совсем не шустрый. С UI тоже много вопросов: используй биндинги к Skia, и, возможно, будет тебе счастье.

Java же есть везде, попробую. Я нашел много библиотек. UI тоже можно делать легко, он идет из коробки. Со своими спецэффектами, но работает быстро. Java не умеет компилироваться в native на Raspberry Pi, но для работы это и не нужно.

Тогда я сделал прототип jSlideShow. Загрузка картинок работала. Я нашел библиотеку, которая позволяла делать разные эффекты. Даже умудрился прикрепить FPS-метр и выводить текст, если случались ошибки.

Когда я в первый раз запустил слайд-шоу на Raspberry Pi, то увидел черный экран. Две минуты смотрел на него, а потом прочел надпись, что картинка поменялась. Время между сменами картинок должно было составлять 10 секунд.

Оказалось, что Java очень специфично работает с картинками. Чтобы вывести на экран, Java конвертирует их в формат ARGB. Это приводит к резкому скачку памяти и дополнительным расходам на создание временных буферов. Тогда я и решил, что Java тоже не подходит.

У меня совсем опустились руки, и я не понимал, что делать дальше.

Тогда я решил попробовать Dart и Flutter. Оказалось, что Dart есть в репозиториях Raspberry Pi. Примерно в то же время я начал пробовать Flutter, поэтому мне было легко на нем разрабатывать. По архитектуре это фактически биндинг Skia, все отлично.

Единственная проблема заключалась в том, что Flutter не подходит для embedded, потому что для Raspberry Pi нет скомпилированных исходников. Я начал искать в интернете, и оказалось, что один разработчик в ноябре 2018 года уже делал подобные эксперименты и описал все круги ада, которые ему пришлось пройти.

Я решил, что тоже справлюсь с этой задачей, и зашел в документацию Flutter Engine. Но из-за бурного развития языка она очень быстро устаревает. К тому же Google для сборки использует clang, из-за чего GCC поддерживается криво. А Raspberry Pi — это закрытая система и toolchain только для GCC.

Тогда я попытался настроить все по инструкции. Потратил примерно 8 часов, но зря. Потом я попробовал обхитрить систему и весь Flutter Engine выгрузил в Raspberry Pi. Raspberry Pi — это 2 гигабайта памяти и бесконечный своп на SD-карточку. Он пытался 12 часов что-то загрузить, но в итоге упал.

Потом на просторах интернета я нашел информацию про разработчика из Америки, который уже сделал Docker-контейнер, умеющий все собирать на ноутбуке. И за 10 дней с помощью фиксов мне удалось настроить и запустить это всё на домашней Ubuntu. Мне пришлось законтрибьютить в проект: я добавил Fullscreen и параллельно поломал TouchScreen.

В итоге я запустил галерею.

Так выглядела Flutter Gallery в 2019 году. Все работало очень медленно: около пяти кадров в секунду. И это я даже не говорю о 2К-картинках

Когда я подключил свой дисплей, то выяснилось, что китайский драйвер очень капризный. По краям LCD-дисплея периодически появлялось мерцание. Еще одно ограничение: Raspberry Pi не поддерживает 2К-дисплей.

Я разочаровался и подумал, что проект уже не получится довести до конца. Плохое железо, плохой софт, плохая идея.

Выход Raspberry Pi 4 и новая надежда

В 4 квартале 2019-го года неожиданно вышел анонс Raspberry Pi 4 c поддержкой 4К-дисплеев и более мощным процессором. Тогда мои 2К точно должны были сработать. Я заказал его и через 2 недели получил новый Raspberry Pi с четырьмя гигабайтам памяти.

Тогда я все соединил.

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

Получилось даже побороть экран (о, как я тогда ошибался :) ). Оказалось, что в апреле 2020 года появился Flutter-pi — проект, устраняющий все преграды, которые раньше мешали делать интерфейсы встраиваемых систем на Flutter. Его можно запустить через консоль, он быстро работает, поддерживает из коробки GPIO, Video, Touch и DRM (Direct Render Manager), позволяющий не инициализировать Х. Но единственный минус — Flutter-pi запускается только в режиме Debug.

Удалось запустить и даже вывести изображения. Это уже мое приложение, которое работало на Raspberry Pi

Я продумал архитектуру.

В моей идеальном мире архитектуру я представлял так: нативный слой, в котором используется GPIO; приложение на Dart, а внутри него Flutter isolate и Hardware isolate, который уже связывается с системой файлов; скрипты, отключающие экран

Борьба с оставшимися блокерами и слом идеальной архитектуры

А что насчет облаков? Оказалось, что Google предоставляет API — драфтовый пакет. И в нем есть буквально все, кроме Google Photo. На официальном сайте компания пишет, что поддерживает REST API, Java и PHP и не использует автогенерацию, потому что API меняется. Тогда из Google Photo только собирались сделать социальную сеть.

Я узнал, что сервисных аккаунтов нет. А это значит, что без консент страницы нельзя получить доступ к библиотеке. Еще есть лимиты на количество запросов с неподтвержденных клиентов и приложений.

Я подумал о том, что в Google же наверняка не пишут API вручную: они генерируются автоматически. А еще оказалось, что Photo API есть в пакете для Go. Да, я не очень люблю Go, но для написания прототипов он подходит идеально.

Я написал прототип, и все сработало: появилась возможность получать доступ к коллекции и качать оттуда фотографии. В Google Photo API есть JSON. Я поместил его в папку, из которой генерируется API. И получил обычный дартовый файл со всеми типизированными вещами, которые касаются Google Photo.

Следующим этапом нужно было подключить датчики. Я хотел, чтобы рамка выключалась самостоятельно и чтобы на рамке было три клавиши: меню, заморозить и выключить экран. Я сделал прототипы на Python, потому что это было достаточно просто: нужно вставить в текстовый файл 4 строчки кода, и все работает.

После этого я сделал маленькое приложение на Flutter, и оно тоже заработало. Это было очень легко, потому что Flutter-pi в примерах содержит работу с GPIO.

Я уже подумал, что никаких блокеров не осталось. Но выяснилась неожиданная вещь. Наверное, все знают о том, что во Flutter используется Native Channel, чтобы связываться с нативным API. Например, на Android Native Channel пишется для того, чтобы вызвать какую-нибудь штуку на стороне Android SDK. И разработчик Flutter-pi тоже использовал Native Channel, который обращается непосредственно в native-слой, и там уже идет работа с GPIO.

Во Flutter есть issue, и там есть целый тред со страданиями разработчиков из-за того, что Native Channel можно сделать только в UI isolate.

Так сломалась моя идеальная архитектура.

Из моего идеального мира пропал Hardware isolate, и вся нагрузка по работе с железом теперь идет только в UI-слое. А это очень плохо: когда UI-поток работает, экран пользователя не обновляется

Flutter считает, сколько времени занимает фрейм. Это усугубляет проблему: если фрейм занимает больше 16-ти миллисекунд, то Flutter начинает хитро пропускать кадры, а пользователь в это время получает отвратительный user experience.

Но есть и ограничения: FFI не поддерживает Inline arrays. Это значит, что если вы в C++ хотите создать такой массив, то в Dart придется написать вот это:

Я сделал функцию в JavaScript, которая принтом вывела в консоль этот код. Я его вставил и не парился. Еще FFI не поддерживает bool: его можно представлять как int, ноль переключать в единицу. Но это не такая большая проблема

После того, как я поправил FFI, мой внутренний перфекционист успокоился. Все стало так, как я хотел. И тут мне написал мой коллега, Андрей Смирнов, предложил помощь с эффектами для смены картинок и нашел отличную либу с кучей эффектов. Андрей мигрировал её, чтобы она работала автоматически.

А еще Андрей сделал крутой виджет с информацией о состоянии устройства

Проектирование корпуса фоторамки и сборка

На этом этапе у меня было все, что нужно: железо и софт.

Я купил маленький преобразователь до пяти вольт, потому что Raspberry Pi, драйверы, PIR и все остальное питалось от пяти вольт

Тогда я задумался о том, на чем проектировать корпус. Я хотел, чтобы спроектировать можно было быстро, а еще чтобы в программе была возможность параметризации. Я выбирал между Blender, Sketch и OpenSCAD, потому что у меня был небольшой опыт работы с ними.

Выбрал OpenSCAD — опенсорсный САПР для параметрического создания объектов.

Я полностью сгенерировал печатные платы. В OpenSCAD выходные артефакты пишутся в виде кода, который чем-то похож на JavaScript

Вот так выглядели бесконечные итерации:

Я ускорил весь процесс до 17 кадров

На гифке кажется, что я что-то перемещаю. Но на самом деле я вырезал кусочки в OpenSCAD, печатал их и накладывал свои платы. Потом проверял, совпадают ли дырки: если есть отличие хотя бы на миллиметр, то все ложится криво. То же самое нужно было сделать для Raspberry Pi и проверить, входят ли все отверстия.

Печать занимает достаточно много времени

Через 12 часов ожидания принтер заканчивает работу, и наступает самый ответственный момент — сборка фоторамки.

А после я соединил все с дисплеем.

Вот так выглядит рамка в работе:

Когда ты держишь в руках то, что только что собрал сам, наступает офигенное ощущение радости и удовлетворения.


Финальная доработка

Мой внутренний перфекционист опять стал капать мне на мозг и говорить, что анимацию можно сделать получше: она немного подергивалась.

Я стал искать причину и выяснил, что их три:

Виджеты на экране пересобираются много раз.

Raspberry Pi замедляет CPU/GPU.

Flutter debug mode.

Виджеты на экране пересобираются много раз. Я сделал на экране красную полоску, которая показывала таймер (я ведь тот еще дизайнер!). Эта полоска просто нереально нагружала процессор, потому что ему приходилось каждый раз перерисовывать виджеты. Я пофиксил это, и тогда анимация стала немного плавнее.

Raspberry Pi замедляет CPU/GPU. Оказалось, что когда нагрузки на процессор нет, Raspberry Pi по умолчанию начинает через несколько секунд снижать частоты. Фоторамка переключает картинки раз в 15 секунд, и за это время Raspberry Pi уходит в самые низкие частоты. Когда загрузка повышается, компьютер какое-то время ждет и только потом их поднимает. Это легко фиксится в конфиге /boot/config.txt.

Flutter debug mode. Осталось решить самую интересную проблему. Наверное, не секрет, что debug-режим — это медленный режим для любой программы. Там очень много того, что не нужно на нативном устройстве. Я знал, что Flutter AOT должен работать быстро, но придется пройти все круги ада, чтобы собрать его для Raspberry Pi.

Необходимые шаги выглядели так:

Казалось бы, что может пойти не так? :)

Чтобы собрать snapshot, необходимо сначала собрать Flutter Engine. Важно, чтобы его версия совпадала с версией локального Flutter. Они должны совпадать идеально, только тогда все получится. Из Flutter Engine можно получить frontend-сервер, в который помещается само приложение. После этого сервер выдает snapshot в виде бинарного файла. Потом этот snapshot нужно залить в snapshot-генератор и получить shared object.

Shared object — это, грубо говоря, динамическая библиотека. Она содержит функции, которые можно импортировать.

В данном случае это всего лишь 4 функции для того, чтобы инициализировать snapshot, изоляты и данные для них

В консоли есть команда, которая позволяет из shared object получать информацию. Нужно подключить shared object и при инициализации поместить его во Flutter Engine. Тогда получится не debug-режим, а нативное приложение.

Внезапно выяснилось неожиданное: библиотека не грузится по непонятной причине, и ни одна утилита в Linux не считает файл запускным: распознает ELF-файл, но не более того. dlOpen — это метод в Linux, C++ и в C, который подключает шареный объект и по названию экспортирует методы. Именно он и не работал.

Readelf — это же опенсорс, поэтому я пошел читать документацию по ELF-формату. Написал парсер ELF, получил ссылки на нужные области памяти и передал эту информацию во Flutter Engine.

И получил такой результат:

dlOpen создает области памяти, которые так помечены в операционной системе, что их можно запускать. А я сэмулировал dlOpen немного по-другому. Engine выдал ошибку

Я подумал, что дихотомия должна мне помочь. К тому моменту у меня был уже большой багаж знаний по SO и ELF. Я сравнил собранную библиотеку для Raspberry Pi libflutter-engine.so. с той библиотекой, которая не работала.

Оказалось, что есть небольшая разница:

Я заметил, что Linux по-разному оценивает запускаемый и не запускаемый файл. В рабочем варианте Linux переходил на определенную позицию в файле и считывал данные оттуда.

Оказалось, что по этому адресу хранится секция ARM, под которую собран бинарник.


Что мне это дало:

Снижение потребления памяти с 275 Mb до 126 Mb.

Итоги и планы на будущее

Проект занял у меня почти год, и я могу с уверенностью сказать, что получил огромное удовольствие, когда держал в руках готовое устройство. Я столкнулся со всеми возможными сложностями, писал на разных языках, но это было круто. А еще я понял, что Flutter — идеальное решение для встраиваемых систем: на нем можно сделать быстрый и отзывчивый интерфейс.

Я заказал новый драйвер от Toshiba для LCD, но он не помог решить проблему с экраном. Видимо, она кроется в самих дисплеях. Нужно подробнее разобраться, что именно перегревается и вызывает проблемы с подсветкой. Если у кого-то из вас есть желание и опыт в этом деле, напишите мне.

Еще я хочу сделать поддержку MQTT и веб-сервер для настройки с телефона.

И напоследок полезный анонс для всех, кто интересуется разработкой на Flutter. 4-5 декабря мы организуем DartUP — ежегодную конференцию по Dart и Flutter на русском и английском языках. В этот раз в онлайне и с крутыми спикерами из Google, Wrike, Яндекс, EPAM и не только. Если вам интересно узнать о последних новостях и кейсах с использованием этих технологий, в том числе в продакшне, регистрируйтесь до 4 декабря (участие в конференции бесплатное). Увидимся там!

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