convert: uncompressed BMP with depth=1?

01/11/2014 - 15:30 von Christian Schrötter | Report spam
Hallo,

ich versuche derzeit ein neues Bootlogo für meinen SDC Megtron LCD auf
den internen Speicher zu laden. Dafür gibt es bei der "serdisplib" ein
Programm namens sdcmegtron_tool:


-f imagefile change bootlogo
(only uncompressed BMP with depth=1 and 240x128 are accepted)



Das originale Bootlogo des Herstellers (exportiert mit -l) sieht so
aus:
http://www.happytec.at/upload_files...otlogo.bmp

Das làsst sich über -f auch sofort importieren. Alle meine eigenen
Versuche sind leider gescheitert. Ich habe mit Gimp ein einfaches Bild
in der richtigen Auflösung erstellt, es als BMP abgespeichert und danach
versucht mittels "convert" in das richtige Format zu bringen. Am Ende
bin ich ungefàhr bei diesem Befehl gelandet:


convert -type bilevel -alpha off -depth 1 -colors 2 old.bmp new.bmp



Allerdings làsst es sich nicht importieren:


# sdcmegtron_tool -f new.bmp
Error: common_read_simplebmp(): no valid BMP file



"identify -verbose" zeigte keine besonderen Unterschiede zwischen dem
Original und meiner Version. Welche Parameter muss ich convert mit auf
den Weg geben, damit mein eigenes Bild das korrekte Format hat und es
von sdcmegtron_tool akzeptiert wird? Eventuell wird auch jemand aus den
betreffenden Codezeilen der common.c schlau, wo der Header der BMP-Datei
überprüft und zurückgewiesen wird:

* http://www.happytec.at/upload_files...ron_tool.c
* http://www.happytec.at/upload_files...g/common.h
* http://www.happytec.at/upload_files...g/common.c

Ich finde leider selbst nach langer Recherche keine Lösung.

Mit freundlichen Grüßen
Christian Schrötter


Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-REQUEST@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)
Archive: https://lists.debian.org/c4726799b4...6222898f6d@lists.kb19.at
 

Lesen sie die antworten

#1 Uwe Kleine-König
02/11/2014 - 11:40 | Warnen spam
Hallo Christian,

On 11/01/2014 03:18 PM, Christian Schrötter wrote:
ich versuche derzeit ein neues Bootlogo für meinen SDC Megtron LCD auf
den internen Speicher zu laden. Dafür gibt es bei der "serdisplib" ein
Programm namens sdcmegtron_tool:

-f imagefile change bootlogo
(only uncompressed BMP with depth=1 and 240x128 are accepted)



Das originale Bootlogo des Herstellers (exportiert mit -l) sieht so aus:
http://www.happytec.at/upload_files...otlogo.bmp


Das làsst sich über -f auch sofort importieren. Alle meine eigenen
Versuche sind leider gescheitert. Ich habe mit Gimp ein einfaches Bild
in der richtigen Auflösung erstellt, es als BMP abgespeichert und danach
versucht mittels "convert" in das richtige Format zu bringen. Am Ende
bin ich ungefàhr bei diesem Befehl gelandet:

convert -type bilevel -alpha off -depth 1 -colors 2 old.bmp new.bmp



Allerdings làsst es sich nicht importieren:

# sdcmegtron_tool -f new.bmp
Error: common_read_simplebmp(): no valid BMP file



"identify -verbose" zeigte keine besonderen Unterschiede zwischen dem
Original und meiner Version. Welche Parameter muss ich convert mit auf
den Weg geben, damit mein eigenes Bild das korrekte Format hat und es
von sdcmegtron_tool akzeptiert wird? Eventuell wird auch jemand aus den
betreffenden Codezeilen der common.c schlau, wo der Header der BMP-Datei
überprüft und zurückgewiesen wird:

* http://www.happytec.at/upload_files...ron_tool.c
* http://www.happytec.at/upload_files...g/common.h
* http://www.happytec.at/upload_files...g/common.c



Wenn man sich den Hexdump des Original-Bildes anschaut, sieht das so aus:

$ xxd sdc-megtron_original-bootlogo.bmp | head
0000000: 424d 3e0f 0000 0000 0000 3e00 0000 2800 BM>...>...(.
0000010: 0000 f000 0000 8000 0000 0100 0100 0000
0000020: 0000 000f 0000 130b 0000 130b 0000 0200
0000030: 0000 0200 0000 ffff ff00 0000 0000 0000
0000040: 0000 0000 0000 0000 0000 0000 0000 0000
0000050: 0000 0000 0000 0000 0000 0000 0000 0000
0000060: 0000 0000 0000 0000 0000 0000 1000 0400
0000070: 0000 0080 0002 0000 0000 0000 0000 0000
0000080: 0000 0000 0000 0000 0000 0000 1000 0200
0000090: 0000 0080 0001 0000 0000 0000 0000 0000

Der Fehler "no valid BMP file" passiert, wenn:

- die ersten zwei Byte != (0x42, 0x4d) sind; oder
- der Wert an Offset 0xa als little endian interpretiert (oben:
0x0000003e = 62) größer als 74 oder kleiner als 54 ist.

Ich vermute bei Dir ist er größer als 74, richtig?

Weiter habe ich jetzt nicht recherchiert, aber ich vermute, diesen Wert
hast Du mit Imagemagick nicht im Griff und musst ein anderes Programm
finden (zur Not einen Hexeditor). Alternativ die (künstliche)
Beschrànkung mit der 74 im Programm wegprogrammieren. Dafür müsste man
einfach statt:

rc = fread(imgbuffer, 1, offset - sizeof(bmpheader), f);
if (rc != (offset - sizeof(bmpheader)) ) {

folgendes machen:

rc = fseek(f, offset, SEEK_SET);
if (rc != offset) {

und natürlich oben den Test auf:

((offset - sizeof(bmpheader)) > 20)

löschen.

Liebe Grüße
Uwe


Zum AUSTRAGEN schicken Sie eine Mail an
mit dem Subject "unsubscribe". Probleme? Mail an (engl)
Archive: https://lists.debian.org/

Ähnliche fragen