ili9341 bitmpas - speicherproblem

Gast #4493381
Lesenswert?

hallo
ich nutze ein adafruit display 2,8" mit ili9341 controller (240 x 320).
ich habe mir grafiken erstellt in einer pixelgröße von 115 x 160. da ich 
allerdings 16 verschiedene bilder benötige, reicht der speicher einfach 
nicht aus.

Welche Möglichkeiten fallen euch da ein, um dieses Problem zu umgehen??

Würde mich sehr über hilfreiche tipps freuen.
Gast #4493427
Lesenswert?

Stefan K. schrieb:
> Oder Du baust eine Kompression ein. Um welche Graphiken handelt es sich?
> Übrigens wäre die Angabe des Controllers und seiner Speichergröße bei
> Deiner Frage hilfreich.

es handelt sich um statische bilder, die ich bereits in monochrom 
bitmaps umgewandelt habe.

controller ist: AT90CAN128 (128k Flash, 4k SRAM, 4k EEPROM)

eine konvertierte grafik (in die c.datei) hat im moment 188 kb :D
Gast #4493440
Lesenswert?

peter schrieb:
> ein adafruit display 2,8" mit ili9341 controller

Das müsste ja bereits einen SD-SLot mit drauf haben....
.... das wäre dann schon die halbe Miete. Die andere Hälfte
ist dann ein existierendes Filesystem auf deinen Controller
anzupassen. Dann kannst du mit SD-Karten jonglieren ....
#4493443
Lesenswert?

Schwarz-weiss oder Graustufen?
Bei Schwarz-weiss bekommst Du 2300 byte pro Bild, das sollte locker 
reinpassen.
Bei Graustufen kannst Du ev. eine Verschlüsselung verwenden. wenn es 
sich um Graphiken oder technische Darstellungen handelt, dann kann das 
mit wenig Aufwand sehr effektiv sein (z.B. Run-length-Kodierung: 
https://de.wikipedia.org/wiki/Laufl%C3%A4ngenkodierung).

Bei Graustufenbildern wird es schon schwieriger.

Gruß, Stefan
#4493451
Lesenswert?

peter schrieb:
> es handelt sich um statische bilder, die ich bereits in monochrom
> bitmaps umgewandelt habe.
> eine konvertierte grafik (in die c.datei) hat im moment 188 kb :D

Was genau hat 188kb? Die Daten, die die c-Datei beschreibt oder ist das 
die Größe der c-Datei?

Eine Monochrom-Graphik mit 115*160 8bit Graustufenpixel hat 18400 Byte. 
Selbst ein RGB-Bild kommt unkomprimiert "nur" auf 55,2kbyte.
Gast #4493486
Lesenswert?

Die Frage, die sich mir stellt ist:
ok, ich könnte die bitmaps auf einer sd karte speichern. was mir aber 
den platz raubt, sind ja die generierten c-dateien (188 kb / datei).

da bringt mir die sd karte ja nicht so viel
Gast #4493508
Lesenswert?

Stefan K. schrieb:
> ???
> Die c-Dateien liegen normalerweise auf Deinem PC und nicht auf dem
> Microcontroller. Der interessiert sich nur für das (gg. komprimierte
> Bitmap). Und der PC sollte seit 1985 Platz für 16 * 188kb gerade noch
> übrig haben?

aber schau dir mal die datei an und was da alles drin steht ;)
Angehängte Dateien:
#4493525
Lesenswert?

peter schrieb:
> aber schau dir mal die datei an und was da alles drin steht ;)

Wenn ich das jetzt mal deute:

> // Generated by  : ImageConverter 565 v2.3

dann ist das nicht monochrom - also 1Bit / Pixel - sondern das 
5Rot6Gruen5Blau-Format für 16-Bit LCD-Farben, also 16 Bit/Pixel.

Du brauchst einen anderen Konverter un eine andere Grafik-Lib für 
Monochrom-Bilder.
Gast #4493528
Lesenswert?

Thomas F. schrieb:
> peter schrieb:
>> aber schau dir mal die datei an und was da alles drin steht ;)
>
> Wenn ich das jetzt mal deute:
>
>> // Generated by  : ImageConverter 565 v2.3
>
> dann ist das nicht monochrom - also 1Bit / Pixel - sondern das
> 5Rot6Gruen5Blau-Format für 16-Bit LCD-Farben, also 16 Bit/Pixel.
>
> Du brauchst einen anderen Konverter un eine andere Grafik-Lib für
> Monochrom-Bilder.

aber ich habe in paint bereits aus dem png bild ein monochromes bitmap 
erstellt. das hab ich in den converterer geladen und mir die datei 
generieren lassen
#4493532
Lesenswert?

In Deinem Bitmap ist jeder Pixel mit einem 16Bit Grauwert kodiert. Bei 
den allermeisten Pixeln benutzt Du aber nur schwarz (0xffff) oder weiss 
(0x0000) (Kodierung kann auch umgekehrt sein). Nur in den Übergängen 
zwischen schwarz-weiss hast Du manchmal Grauwerte. Falls Du diese nicht 
unbedingt brauchst, kommst Du auch mit einer Kodierung von 1 Bit pro 
Pixel aus - was den Speicherbedarg um den Faktor 16 verringert.

Falls Du das - aus welchen Gründen auch immer - nicht machen willst: die 
oben gezeigte Graphik eignet sich hervorragend für rlc. Würde sicher den 
Faktor 1:10 bringen.

Im Übrigen ist die Bildgröße 115 * 180 Pixel und nicht wie oben 
angegeben 115 * 160 Pixel.
Gast #4493537
Lesenswert?

Stefan K. schrieb:
> In Deinem Bitmap ist jeder Pixel mit einem 16Bit Grauwert kodiert. Bei
> den allermeisten Pixeln benutzt Du aber nur schwarz (0xffff) oder weiss
> (0x0000) (Kodierung kann auch umgekehrt sein). Nur in den Übergängen
> zwischen schwarz-weiss hast Du manchmal Grauwerte. Falls Du diese nicht
> unbedingt brauchst, kommst Du auch mit einer Kodierung von 1 Bit pro
> Pixel aus - was den Speicherbedarg um den Faktor 16 verringert.


ok wo kann ich das am besten machen ?? natürlich würde schwarz weiß 
ausreichen

> Falls Du das - aus welchen Gründen auch immer - nicht machen willst: die
> oben gezeigte Graphik eignet sich hervorragend für rlc. Würde sicher den
> Faktor 1:10 bringen.
>
> Im Übrigen ist die Bildgröße 115 * 180 Pixel und nicht wie oben
> angegeben 115 * 160 Pixel.

ja stimmt. sorry.
#4493578
Lesenswert?

Du brauchst einen Image-Konverter, der jedes Pixel in nur einem Bit 
speichern kann. K.A. ob das der ImageConverter 565 v2.3 kann.

Zusätzlich musst Du diese bit-kodierten Graphiken auch ausgeben können. 
Ob es dafür eine Funktion in Deiner Graphik-Library gibt, musst Du 
nachschauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren