Как уменьшить размер *.tft файла для дисплея Nextion (анимация)

Daminski

✩✩✩✩✩✩✩
26 Май 2021
23
1
Пытаюсь сделать анимационную заставку на дисплей Nextion 4.3", всё получилось. Но возникла проблема, 60 кадров анимации заняли почти всю встроенную память дисплея (16 Мегабайт). Анимация в формате GIF кадров, 60 картинок, размером от 1Кб до 35Кб, общим размером 1.54Мб. Не могу понять почему *.tft файл прошивки становится таким большим, при том что сама анимация занимает всего 1.54Мб?

Кроме этой заставки планировалось ещё и меню, но тут даже одна его страница больше не помещается. А когда добавляю хотя бы одну страницу меню, *.tft файл прошивки становится больше чем 16Мб и при попытке загрузить его на дисплей, мне на самом дисплее пишет "File is too large for destination device".

Как можно уменьшить размер tft файла? Или как можно сделать так, чтобы все графические данные считывались с micro SD карты (и при включении дисплея с ней, он не пытался перепрошиться файлом, который слишком велик для него, а просто считывал графику) если не удастся его уменьшить?
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,984
637
45
gif - это пожатый формат, а прошивке скорее всего не пожатый формат кадров нужен. Это как любую картинку в паинте пересохранить в bmp формат.
 

Daminski

✩✩✩✩✩✩✩
26 Май 2021
23
1
Избыточное цитирование. Отредактируй или сообщение будет удалено
gif - это пожатый формат, а прошивке скорее всего не пожатый формат кадров нужен. Это как любую картинку в паинте пересохранить в bmp формат.
Попробовал просто пересохранить один кадр размером 40Кб из gif в формат bmp. Она наоборот увеличилась в весе до 300кб, сохранял через Paint. Что-то тут не том, мне кажется
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,984
637
45
@Daminski, Так я про что и говорю. Если пересохранить картинку в несжатом формате (bmp) то она распухает раз в десять, то же самое происходит и когда конвертируешь картинку для прошивки.
 

bort707

★★★★★★✩
21 Сен 2020
3,110
918
Пытаюсь сделать анимационную заставку на дисплей Nextion 4.3"
Посчитайте размер одного кадра:
разрешение дисплея 480х272, глубина цвета 16 бит
Соответственно, один кадр вашей заставки занимает 480*272 * 2 = 261 Кб
У вас этих кадров 60 - то есть общий размер вашей заставки = 261к * 60 = 15.67 Мб
Ну вот все и выяснилось - у вас вся память ушла на заставку...

Самый простой (и правильный) способ - уменьшить число кадров в заставке, скажем в 2 раза. Подумайте о том, что заставка - в общем совсем не обязательная вещь. У вас же, надеюсь, и какое-то содержание в программе запланировано, не одна только заставка :)
 
Изменено:
  • Лойс +1
Реакции: Nikanor

Daminski

✩✩✩✩✩✩✩
26 Май 2021
23
1
480*272 * 2 = 261 Кб
У вас этих кадров 60 - то есть общий размер вашей заставки = 261к * 60 = 15.67 Мб
Ну вот все и выяснилось - у вас вся память ушла на заставку...
Спасибо за разъяснения и подсчет. Теперь мне стало понятно в чем дело. Но это конечно разочарование, такой дорогой дисплей и так мало памяти.

А нельзя как-то использовать micro SD карту в качестве "жёсткого диска", как на компьютере, а внутренняя память бы выполняла роль "SSD диска"?😁 Чтобы оттуда читать эти тяжёлые кадры анимации. Тогда там хоть гигабайты этих анимаций можно будет сделать.

Ведь я планировал там не только видео заставку при загрузке Ардуино, но ещё и динамичное видео, в котором при движении мотора с энкодером, синхронно перемещался бы объект в раскадровке.
 

Divin

★★★✩✩✩✩
30 Янв 2021
444
195
@Daminski, чтобы сделать "как на компьютере" нужны ресурсы " как на компьютере", а вы с ардуиной хотите работать.
 

bort707

★★★★★★✩
21 Сен 2020
3,110
918
о это конечно разочарование, такой дорогой дисплей и так мало памяти.
потому что это не планшет для видеоигр, а интерфейс для микроконтроллерного устройства.
На моей памяти вы первый, кому не хватило памяти Некстион.
Может все-таки сосредоточится на программе, а не на "бантиках", для ее украшательства, которые, как мне кажется, мало кому нужны
 

Daminski

✩✩✩✩✩✩✩
26 Май 2021
23
1
На моей памяти вы первый, кому не хватило памяти Некстион.
Может все-таки сосредоточится на программе, а не на "бантиках", для ее украшательства, которые, как мне кажется, мало кому нужны
ПРограмма уже почти полностью сделана и меню к ней тоже. Но по задумке предполагалось и воспроизведение двух видеофрагментов. Заставки и ещё одного отладочного меню. Так что вариант без заставки не подойдёт. Жаль я изначально об этом не подумал перед покупкой. У меня версия дисплея Basic, на ней слишком мало памяти. Но есть ещё версия Intelligent, там целых 120Мб памяти, этого точно должно хватить.

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

Nikanor

★★✩✩✩✩✩
1 Окт 2020
178
51
Ведь я планировал там не только видео заставку при загрузке Ардуино, но ещё и динамичное видео, в котором при движении мотора с энкодером, синхронно перемещался бы объект в раскадровке.
под каждую задачу подбирается соответствующее железо.
и дисплей
и контроллер.

вы же взяли то, на чём все ваши хотелки не реализовать.
теперь разочарование...
 

Daminski

✩✩✩✩✩✩✩
26 Май 2021
23
1
Глубину цвета нельзя поменять на 8бит?
тогда очень ухудшается качество изображения, поскольку оно цветное и с градиентами

вы же взяли то, на чём все ваши хотелки не реализовать.
теперь разочарование...
Да, тут что называется "сам виноват". Но ничего, пока я временно сократил количество кадров в два раза, пока буду ждать новый дисплей. Сейчас файл TFT занимает 11Мб и всё работает нормально.
 
Изменено: