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
epdm schrieb: > ABER mit welchem Programm macht man diese Umwandlung am besten? Mit dem, das du dir schreibst und dann für alle anderen hier veröffentlichst. Hopp, ran an den Speck, trau dich :-)
> 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?
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)
>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.
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.
Beim BMP sieht man aber mit zusammengekniffen Augen schon an den HexWerten, wo Header aufhört und Daten anfangen.
epdm schrieb: > damit man Bilder mit embedded Systeme auslesen und ausgeben kann, > sollten diese meines Wissens wie folgt vorliegen: Schwachsinn. Das Bild kann man doch binär direkt ins Flash laden! Danach braucht man im Programm nur noch die Adresse wo's abgespeichert wurde.
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.
Wenn's nur ne einmalige Aktion ist: Gimp kann als C-Array exportieren.
alleg schrieb: > BMP mit RLE oder PNG oder GIF -> Hexeditor Ja. > Hexeditor -> Export als C. Kaum ein Hexeditor kann das.
... man kann doch einfach das Hex kopieren und dann mit jedem beliebigen Texteditor " " durch ", 0x" ersetzen ... fertig. Dafür braucht's nun wirklich keine extra-Software.
Du kannst es machen wie die Gründerväter, und dein Bild mit (vermutlich fast jeder) Bildverarbeitungssoftware in das XPM-Dateiformat konvertieren. Lohnt natürlich nur, wenn du mit wenigen Farben auskommst. https://de.wikipedia.org/wiki/X_PixMap
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...
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')
oder sowas : https://xprofan.net/intl/de/sdk/xprofan-datengenerator/ der macht es als Longints für einen normalen Speicherbereich. Das könnte man dann für eigenen Zwecke umfriemeln.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.