Bilder umwandeln für C/C++ Code

Gast #4892972
Lesenswert?

Hallo,

damit man Bilder mit embedded Systeme auslesen und ausgeben kann, 
sollten diese meines Wissens wie folgt vorliegen:

const UG_U16 logo_bmp[] =
{
  0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 
0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 
0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 
0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xDEDB,
        0xB5B7, 0x94B3,.....0xF79E, 0xF79E, 0xF79E
};


ABER mit welchem Programm macht man diese Umwandlung am besten?


vielen Dank
Gast #4893023
Lesenswert?

> ABER mit welchem Programm macht man diese Umwandlung am besten?

Programm?
Mit ein wenig improvisierter Skriptakrobatik aus dem Ärmel auf der 
Kommandozeile!
(bash, Python, Perl, ...)

Wo kommen wir denn hin, wenn wir nur noch auf Mundgerechte 
Fertigprogramme setzen?
Gast #4893041
Lesenswert?

Ausserdem: ist es nicht öde, den FLASH-Platz mit soviel monotonen Daten 
zu verschwenden?

Hier ist das uC.net Forum (aka "Speicherknauserer"), also sollten doch 
Vorschläge auftauchen, welche mit simplen Funktionen diese Pixeldaten 
aus kürzeren, weniger redundanten const Daten wieder hervorzaubern... 
:-)    (Run length encoded oder so)
Gast #4893057
Lesenswert?

>also sollten doch
>Vorschläge auftauchen, welche mit simplen Funktionen diese Pixeldaten
>aus kürzeren, weniger redundanten const Daten wieder hervorzaubern...
>:-)    (Run length encoded oder so)
BMP mit RLE oder PNG oder GIF -> Hexeditor -> Export als C.
Gast #4893069
Lesenswert?

Für eine "interne" Resource würde ich aber auch kein komplettes BMP etc. 
mit allen Headern ablegen. Das scheint der Ursprungspost aber auch nicht 
zu machen, so wie die Hex-Werte aussehen.
Gast #4893113
Lesenswert?

epdm schrieb:
> Hallo,
>
> damit man Bilder mit embedded Systeme auslesen und ausgeben kann,
> sollten diese meines Wissens wie folgt vorliegen:
>
> const UG_U16 logo_bmp[] =
> {
>   0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E,
> 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E,
> 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xF79E,
> 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xDEDB,
>         0xB5B7, 0x94B3,.....0xF79E, 0xF79E, 0xF79E
> };
>

neee, nur auf big endian Maschinen... Standardfehler.
Gast #4896141
Lesenswert?

Kommandozeile vor dem Frühstück für Alle! schrieb:
> Hier ist das uC.net Forum (aka "Speicherknauserer"), also sollten doch
> Vorschläge auftauchen, welche mit simplen Funktionen diese Pixeldaten
> aus kürzeren, weniger redundanten const Daten wieder hervorzaubern...
> :-)    (Run length encoded oder so)

Hatte da mal eine Modifikation von LZ77 geschrieben, optimiert für 
mitkompilierte Daten auf Microcontrollern (sprich Daten sind readonly, 
kein Puffer vorhanden, in dem man das Wörterbuch vorhalten kann, sondern 
Daten werden direkt weg gestreamt). Vielleicht finde ich den Code ja 
noch...
Gast #7296309
Lesenswert?

from PIL import Image, ImageDraw

# Create a blank image with a white background
width, height = 800, 800
img = Image.new('RGB', (width, height), (255, 255, 255))

# Create a draw object
draw = ImageDraw.Draw(img)

# Draw the outline of the elephant's head
draw.ellipse((200, 50, 600, 450), fill=(255, 255, 255), outline=(0, 0, 
0))

# Draw the elephant's ears
draw.polygon([(100, 200), (200, 50), (300, 200)], fill=(0, 0, 0))
draw.polygon([(700, 200), (600, 50), (500, 200)], fill=(0, 0, 0))

# Draw the elephant's eyes
draw.ellipse((250, 150, 350, 250), fill=(0, 0, 0))
draw.ellipse((450, 150, 550, 250), fill=(0, 0, 0))

# Draw the elephant's trunk
draw.polygon([(400, 250), (400, 400), (450, 350)], fill=(0, 0, 0))

# Draw the elephant's legs
draw.rectangle((200, 550, 250, 800), fill=(0, 0, 0))
draw.rectangle((550, 550, 600, 800), fill=(0, 0, 0))

# Draw the soccer ball
draw.ellipse((375, 500, 425, 550), fill=(255, 255, 0))

# Save the image
img.save('elephant_soccer.png')
Gast #7296508
Lesenswert?

epdm schrieb:
> damit man Bilder mit embedded Systeme auslesen und ausgeben kann,
> sollten diese meines Wissens wie folgt vorliegen:
>
> const UG_U16 logo_bmp[] =
> {

Das ist ja nun eine ziemliche Weile her, aber offensichtlich sind all 
diejenigen, die diesen alten Thread wieder ausgegraben haben, keinen 
Deut klüger geworden. Als ob man durch simples Exportieren von Bytes 
oder LongInts aus einem Hex-Editor  und voranstellen von '0x' die Sache 
lösen kann. Nein, mit sowas kann man sich den Speicherplatz zumüllen, 
aber zum Handhaben von Bildern in einem µC ist all sowas noch nicht 
einmal der Anfang.

In der Zwischenzeit hat es hier in diesem Forum bereits einige Beiträge 
gegeben (ja, auch von mir), wo dieses Problem ordentlich abgehandelt 
worden ist. Offenbar hat all das nichts genützt.

So, wer mit den beiden angehängten Bildern etwas anfangen will, sollte 
die Forensuche benützen.

W.S.
Angehängte Dateien:

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