Forum: Mikrocontroller und Digitale Elektronik jpg zu rgb565


von M. Н. (Gast)


Lesenswert?

Hallo Leute!

Ich habe ein TFT mit rgb565 Interface. Ansteuerung soweit einfach. Nun 
möchte ich aber gerne ein JPG Bild (oder ein anderes Format) anzeigen 
lassen, da ein JPG Bild weniger Speicherplatz als Rohdaten verbraucht.

Ist es möglich mit einem Mikrocontroller die RGB Werte der Pixel aus 
einem JPG Bild auszulesen? Wenn ja, wie?

Danke im voraus M.H.

PS: Mit dem Format bin ich flexibel. Kann also auch BMP PNG o.ä. sein. 
Sollte nur ein gängiges Bildformat sein.

von Simon B. (nomis)


Lesenswert?

M. H. schrieb:
> Ist es möglich mit einem Mikrocontroller die RGB Werte der Pixel aus
> einem JPG Bild auszulesen? Wenn ja, wie?
>
> PS: Mit dem Format bin ich flexibel. Kann also auch BMP PNG o.ä. sein.
> Sollte nur ein gängiges Bildformat sein.

JPG ist kompliziert, das will man nicht selber decodieren. Ob die 
jpeglib für Deinen Mikrocontroller verfügbar ist, ist natürlich eine 
Frage des Controllers. PNG ist auch kompliziert, weil es da viele 
Varianten gibt, auch hier würde die libpng sehr helfen.

BMP ist einfach, insbesonders weil es auch RGB565 enthalten kann (kann 
man z.B. mit GIMP erzeugen). Allerdings bietet es keine sinnvolle 
Kompression, so dass man gegenüber Rohdaten nicht viel gewinnt.

Viele Grüße,
        Simon

von M. Н. (Gast)


Lesenswert?

OK. Vielen Dank für die info. Ich habe vor eine ATxmega128a1 zu 
verwenden. Mit 32MHz. Werde mir mal die libs anschauen.

von SilentPro (Gast)


Lesenswert?

Ja, der Thread ist schon ein paar Monate alt, aber da ich auch gerade 
nach Jpeg-C(++)-Bibliotheken für µCs (ARM) gesucht habe, kann ich hier 
noch meine Ergebnisse anbieten.

1. jpeg-compressor - http://code.google.com/p/jpeg-compressor/
Vielleicht die kompakteste Implementierung für JPEG-Kompression 
&-Dekodierung
Der Encoder ist trotz der geringen Größe sehr schön und recht leicht zu 
verstehen und zu modifizieren, wenn man die Jpeg-Grundlagen kennt.
Es gibt auch einen Patch 
(http://altdevblogaday.com/2011/04/06/a-smaller-jpg-encoder/), der die 
Speichernutzung noch etwas optimiert.
Es werden wohl maximal 32 KB benötigt und umständliche "malloc()"s 
eingespart!

Der Decoder ist wohl etwas aufwendiger, aber wenigstens nur eine 
einzelne Datei mit nicht zu vielen Features (im Vergleich zur libjpeg).


2. NanoJPEG - http://keyj.emphy.de/nanojpeg/
Weiterer Minimalansatz eines Dekoders in einer einzelnen Datei.
Speicherbedarf ist ziemlich hoch (>>512 kB+Bild), aber man kann einiges 
optimieren. (sh. Kommentare auf der Homepage)


Auf einem ARM mit ggf. externem RAM lässt sich das schon gut nutzen.
Ob's auch auf einem AVR läuft bleibt fraglich.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.