| | |
|
|
|
|
PNG/GIF/JPEG » simpleBMP (Megtron LCD Bootlogo) |
|
|
|
Bereits seit Ende 2010 (das "Dockstar" Zeitalter lässt grüßen) besitze ich einen USB-LCD von Megtron mit 240x128 Pixel und einer blau/weißen Anzeige inklusive Hintergrundbeleuchtung. In den letzten Jahren lag der leider sehr oft ungenutzt in einer Schublade. Vor einiger Zeit habe ich ihn dann für ein Projekt wieder aktiviert. Dank LCD4Linux und der serdisplib ist das auch keine große Hexerei. Letzteres beinhaltet auch für Linux ein praktisches Programm mit dem Namen sdcmegtron_tool. Darüber lässt sich z.B. auch das Bootlogo des LCD auslesen und ändern. Dabei wird eine sehr einfache, unkomprimierte und einfärbige (depth=1) BMP Grafik verwendet. Das Problem daran ist, dass ich selbst nach Stunden keine Lösung gefunden habe, wie man das gewünschte Format generiert. Denn egal wie man es abspeichert oder konvertiert, das Programm regte sich immer sofort auf und quittierte den Dienst:
Zitat: | Error: common_read_simplebmp(): no valid BMP file |
Auf der nicht darauf spezialisierten Mailingliste von Debian wusste man auch keine wirkliche Lösung. Allerdings hat mir Uwe dort einige interessante Details sehr gut erklärt. Mein Herumpfuschen mit einem Hexeditor in der BMP-Datei war mit genauso wenig Erfolg gekrönt, wie alle vorherigen Versuche. Den Quellcode des sdcmegtron_tool's abzuändern war keine Option, da es nicht nur bei meiner Installation laufen sollte. Somit war die nächste Idee für einen Versuch geboren...
Um das aktuelle Bootlogo zu exportieren, enthält das Programm auch eine Funktion common_write_simplebmp(). Das und die Tatsache, dass BMP ein sehr einfach gehaltenes Dateiformat ist, sind ideale Voraussetzungen, einen eigenen Konverter zu schreiben. Da ich kein C/C++ Experte bin und ich es sowieso auf einer Website gut gebrauchen konnte, portierte ich die Funktion für die PHP-Welt. Mit dem Ergebnis, dass man das Bootlogo nur als PNG/GIF/JPEG Datei abspeichern und einmal durch meine Funktion jagen muss. Danach akzeptiert das Programm die BMP-Datei ohne zu Meckern!
Herausgekommen ist unter anderem auch ein Online-Tool auf HAPPYTEC, womit man die Konvertierung eigener Bilder sofort und unkompliziert durchführen kann: image2simplebmp() Webwrapper
Funktionsweise:
- Das originale Bild wird zuerst einmal mit den GD-Funktionen von PHP geöffnet.
- Danach wird ein neues BMP-Bild von Null weg erstellt. Dazu zählt auch der gesamte Header.
- Am Ende wird Pixel für Pixel und somit Bit für Bit in die neue Datei kopiert.
Sonstiges:
- Danke an den serdisplib Entwickler Wolfgang Astleitner, ohne dessen Code das niemals geklappt hätte.
- Meine PHP-Portierung steht wie die Originalfunktion unter den Bedingungen der GPL zur freien Verfügung.
- Falls es Probleme mit der Funktion oder dem Onlinetool gibt, können diese jederzeit im Forum gepostet werden.
Voraussetzungen:
- PHP 5 (getestet mit PHP 5.2 - 5.5 unter Debian & Ubuntu)
- GD Erweiterung mit Unterstützung für PNG, GIF und JPEG Dateien
- optional noch mehr für die Filterfunktion...
Quellcode der PHP-Portierung:
- v1.0.0 vom 03.11.2014: Verfügbar im Pastebin oder als Direktdownload.
SHA512 Prüfsumme: 58bea69661a6f3e0bc8b806b78cdf00fe93c253e578f8958142f42f1a768752f0be9e8cfec9a9b001f8c641e3f3d20d8b237bea12aa668797b929e629f71adfb
SHA256 Prüfsumme: 857432042e3ece430534e2c326013c4156b90ac85e864c1eb1a4bf691d934d44
MD5 Prüfsumme: 378f9b2e5b146a8551b0b554e2bb4765
Zum Herunterladen der aktuellen Version kann unter GNU/Linux einfach folgender Befehl genutzt werden:
Code: wget -O "image2simplebmp_1.0.0.php" "http://www.happytec.at/pastebin/download.php?id=275" |
Die Prüfsumme sollte danach unbedingt kontrolliert werden!
Tipps zur Erstellung eines passenden Bootlogo's mit Gimp:
- Neue Grafik mit 240x128px @ 72 dpi
- Farbmodus des Bildes auf "Indiziert" einstellen
- Schwarz/Weiß-Palette (1-Bit) verwenden
- Das Ergebnis als PNG abspeichern
Hinweis: Es hätte sicherlich noch bessere und schönere Lösungen gegeben. Für mich war es allerdings eine schnelle und praktische Methode, bei der ich auch gleich noch einiges gelernt habe. Und ich weiß jetzt auch, dass PHP's Umgang mit binären Daten teilweise wirklich grässlich ist, wenn man Bit für Bit etwas zerlegen oder zusammensetzen möchte.
|
Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt am 04.11.2014, 00:03. |
Nach oben |
|
Kommentare: 0 |
Kommentare sind deaktiviert |
|
Autor |
Nachricht |
Für diesen Beitrag können zur Zeit keine neuen Kommentare verfasst werden. Kontaktiere den Autor des Beitrages, falls du Fragen dazu hast. |
Verwendete Zeitzone: CET (Europe/Berlin ) Aktuelles Datum & Uhrzeit: 13.01.2025, 21:25 |
Nach oben |
|
|
|
|
|
|
| | |