LabVIEWForum.de
Header aus Icon Datei auslesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Header aus Icon Datei auslesen (/Thread-Header-aus-Icon-Datei-auslesen)



Header aus Icon Datei auslesen - Chasing - 24.05.2008 01:22

Hiho

ich versuche nun schon seit Stunden, den Header einer .ico Datei auszulesen und mache irgendwas falsch, hoffe ihr könnt mir helfen.
Laut meinen Infos soll der Header folgendermaßen aufgebaut sein:

Offset Größe Typ Inhalt
0000h 0002h WORD immer 0
0002h 0002h WORD 1 für Icon
0004h 0002h WORD Anzahl Bilder in Datei

Wenn ich nun das Ganze versuche aus einer .ico Datei auszulesen, bekomme ich Sachen wie 0000 0100 1200, also schon die Daten die ich suche aber immer zusätlich 2 Nullen dran.
Evtl. bin ich gerade blind was das angeht aber ich seh grad nicht mehr durch(überarbeitet).
Im Anhang noch mein Versuchs-VI

LV 8.2.1
[attachment=12666]

Gruß Andi


Header aus Icon Datei auslesen - IchSelbst - 24.05.2008 09:05

' schrieb:bekomme ich Sachen wie 0000 0100 1200, also schon die Daten die ich suche aber immer zusätlich 2 Nullen dran.
Die Nullen hängen nicht dran - die Bytes sind vertauscht.

Auf Intel-Prozessoren werden Daten in der Reihenfolge niederwertigstes Bytes => höherwertigstes Byte abgespeichert. Wenn man solche Daten nun per Stream ausliest, dann bekommt man eben zuerst das Low-Byte - also 00 01 12 - und dann erst das High-Byte - also die "angehängten" Nullen. Von den Daten, von denen du weißt, dass es word (U16, I16) sind, drehst du einfach das High-Byte und das Low-Bytes um (bei I32/U32 entsprechend vier Bytes tauschen). Willst du lieber mit Strings arbeiten, so musst du halt die entsprechenden zwei Bytes tauschen.


Header aus Icon Datei auslesen - Chasing - 24.05.2008 23:10

Ich glaube verstanden zu haben aber an der Umsetzung mangelt es dennoch.

Hier mein neuer Versuch:[attachment=12672]Lv82_img

Keine Ahnung ob es überhaupt so stimmt, jedenfalls erscheint es mir recht aufwendig, geht das nicht einfacher?


Header aus Icon Datei auslesen - rolfk - 26.05.2008 12:33

' schrieb:Ich glaube verstanden zu haben aber an der Umsetzung mangelt es dennoch.

Hier mein neuer Versuch:[attachment=39916:header_ico2.vi]

Keine Ahnung ob es überhaupt so stimmt, jedenfalls erscheint es mir recht aufwendig, geht das nicht einfacher?

Es geht einfacher. Siehe Anhang.

Und noch viel einfacher: Gehe zu vi.libPlatformicon.llb in Deinem LabVIEW Folder und da hats eine Library die Icon Files lesen kann.

Rolf Kalbermatter

Lv82_img


Header aus Icon Datei auslesen - Chasing - 26.05.2008 16:53

Super, vielen Dank, hätte nicht gedacht das es so einfach sein könnte.

Gruß Andi


Header aus Icon Datei auslesen - Chasing - 29.05.2008 11:43

' schrieb:Und noch viel einfacher: Gehe zu vi.libPlatformicon.llb in Deinem LabVIEW Folder und da hats eine Library die Icon Files lesen kann.

Kann es sein das diese VI´s lediglich Grafiken bis 256 Farben ausgeben, ich bekomm bei mehr Farben nur weiße Grafiken?

Gruß Andi


Header aus Icon Datei auslesen - rolfk - 31.05.2008 14:48

' schrieb:Kann es sein das diese VI´s lediglich Grafiken bis 256 Farben ausgeben, ich bekomm bei mehr Farben nur weiße Grafiken?

Gruß Andi

Ja ziemlich sicher. Icons mit mehr als 256 Farben sind erst mit Windows XP gekommen und das Format ist da doch etwas anders aufgebaut dann mit bis zu 256 Farben. Vor allem haben die nicht nur eine Iconmaske sondern einen kompletten Alpha-Kanal für halbtransparente Effekte. Ich gehe also davon aus dass es sich hierbei bei der Bitmap eigentlich um eine 32 Bit Windows Bitmap handelt, weiss es aber nicht wirklich.

Rolf Kalbermatter


Header aus Icon Datei auslesen - Chasing - 03.06.2008 21:42

Danke dir!

Sieht so aus als ob ich wohl doch den aufwändigeren Weg gehen muß, denn Bedingung ist die Verwendung von XP und sogar Vista:flop:Icons.

Gruß Andi


Header aus Icon Datei auslesen - rolfk - 06.06.2008 07:51

' schrieb:Danke dir!

Sieht so aus als ob ich wohl doch den aufwändigeren Weg gehen muß, denn Bedingung ist die Verwendung von XP und sogar Vista:flop:Icons.

Gruß Andi

Ich würde die bestehende Library von NI einfach erweitern um diese Formate zu unterstützen. Kein Grund alles von Beginn an neu zu machen. Allerdings wird Dir Alphashading wohl versperrt bleiben in LabVIEW. LabVIEW Picture Control Bitmaps unterstützen nur Masken, keine Alpha-Kanäle.

Rolf Kalbermatter