mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4Bit-Graustufen in C-Array


Autor: Freak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

gibt es ein Programm das 4bit-Graustufenbilder in ein C-Array 
konvertiert oder ein Hex-Code ausgibt?

Das wichtige dabei ist, das ein Pixel mit 4bit definiert ist, d.h. ein 
Byte repräsentiert 2 Pixel!

Gruß
C.E.

Autor: epdm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leider keine Antwort... ich hätte die gleiche Frage?

Autor: S. R. (svenska)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Speichere das Bild einfach unkomprimiert mit 4 Graustufen ab und benutze 
einen beliebigen Binär-nach-C-Konverter. Oder du schreibst dir was für 
z.B. PGM-Bilder selbst - ImageMagick kann die aus beliebigen Quelldaten 
erzeugen.

Autor: Georg (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Freak schrieb:
> d.h. ein
> Byte repräsentiert 2 Pixel!

Das ist aber für die Verarbeitung ziemlich ungünstig, ich würde ein Byte 
pro Pixel nehmen.

Georg

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
epdm schrieb:
> leider keine Antwort... ich hätte die gleiche Frage?

Wenn die üblichen Verdächtigen wie ImageMagick usw. das nicht können, 
dann wird man sich wohl ein Programm dafür schreiben müssen.

Übrigens wurde weder damals vom Themenersteller noch von Dir das 
konkrete Bildformat genannt.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Der gimp kann ein Bild als c-code speichern.


Gruß

Jobst

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Georg schrieb:
> Freak schrieb:
>> d.h. ein
>> Byte repräsentiert 2 Pixel!
>
> Das ist aber für die Verarbeitung ziemlich ungünstig,

Naja, so schlimm ist das auch nicht. Früher(tm) wurde meist mit 
Bitplanes gearbeitet, d.h. es wurde in einem Byte immer von 8 Pixeln 
jeweils ein Bit gespeichert, so dass jeder Pixel auf 4 Bytes verteilt 
ist.

> ich würde ein Byte pro Pixel nehmen.

Das wiederum produziert einen Speicher-Overhead von 100%, was ich nun 
wieder als "ziemlich ungünstig" bezeichnen würde.

Autor: grå (Gast)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
So geht's:
Gimp: reduziere das Bild auf 16 Graustufen, indem Du vorher ne 
entsprechnde Palette mit 16 Graustufen erzeugst.
Dann als BMP abspeichern.
Das dann in nem Hex-Editor (zB Bless) öffnen, den Header und die Palette 
entfernen und dann kannst Du's als C (Text) exportieren.
Dann sind 2 Pixel in einem Byte.

So sieht ein 16 Graustufen BMP mit 2 Pixel pro Byte aus (noch incl. 
Header):
0x42, 0x4D, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xBA, 0x00, 0x00, 0x00, 0x6C, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x13, 0x0B,
0x00, 0x00, 0x13, 0x0B, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E,
0x0E, 0x00, 0x20, 0x20, 0x20, 0x00, 0x32, 0x32,
0x32, 0x00, 0x44, 0x44, 0x44, 0x00, 0x54, 0x54,
0x54, 0x00, 0x58, 0x58, 0x58, 0x00, 0x67, 0x67,
0x67, 0x00, 0x79, 0x79, 0x79, 0x00, 0x8B, 0x8B,
0x8B, 0x00, 0x9D, 0x9D, 0x9D, 0x00, 0xAD, 0xAD,
0xAD, 0x00, 0xAF, 0xAF, 0xAF, 0x00, 0xC0, 0xC0,
0xC0, 0x00, 0xD2, 0xD2, 0xD2, 0x00, 0xE4, 0xE4,
0xE4, 0x00, 0x78, 0x9A, 0xCD, 0xEF, 0x67, 0x89,
0xAC, 0xDE, 0x46, 0x78, 0x9A, 0xBD, 0x34, 0x57,
0x89, 0xAB, 0x23, 0x45, 0x78, 0x9A, 0x12, 0x34,
0x57, 0x89, 0x01, 0x23, 0x45, 0x78, 0x00, 0x12,
0x34, 0x57,     ,     ,     ,     ,     ,     ,

Autor: grå (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
Die letzten 4 bzw. 5 Zeilen sind die Bildinformationen:
ab 0x78, 0x9A, 0xCD, ..."

Autor: Marco Glietsch (mg-programmer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte das selbe Problem, ein Bild in ein Code Array zu konvertieren. 
Daher habe ich ein Programm geschrieben, das diese Aufgabe übernimmt.
Es kommt mit folgenden Bildformaten zurecht:
- bmp
- png
- gif
- jpeg

Als Ausgabeformat kann man wählen zwischen
- Schwarz/weis (1Bit/Pixel)
- 8Bit Graustufen (8Bit/Pixel)
- RGB444 (12Bit/Pixel)
- RGB565 (16Bit/Pixel)
- RGB666 (18Bit/Pixel)
- RGB888 (24Bit/Pixel)

Beim auszugebenden Array kann man vorgeben, wieviele Werte pro Zeile 
angezeigt werden sollen.
Je nach Koordinatensystem des Displays am Mikrocontroller kann das Bild 
an x- und y-Achse gespiegelt werden.

Ich hoffe, das hilft weiter

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.