.ico files

Runtime

Top Contributor
Hallo Leute,

ich bin zu blöd um zu Googeln wie eine .ico-files aufgebaut, also, ich habe nichts gefunden... :noe:. Da dieses Format nicht unterstützt wird in JSE, möchte ich es selbst machen. Kann mir jemand nen Link zu ner Website geben, auf der das erklärt wird? Danke. :toll:
 

Runtime

Top Contributor
Ich möchte eher wissen, wie man solche Dateien von Grund auf liest und schreibt mit Java (drücke mich manchmal nicht so richtig aus :oops:).
 

Marco13

Top Contributor
Und "nicht richtig" heißt in diesem Fall nicht "falsch", sondern "nicht ausführlich genug". Wenn ich jetzt einen Essay schreiben sollte, würde der etwa so aussehen:

Es war einmal ein FileInputStream....
...
...
...
... und wenn das BufferedImage nicht gestorben ist, zeigt es heute noch das Icon an"


Dazwischen müßte halt noch aufgefüllt werden :D
 

Runtime

Top Contributor
Ich hab im Google gefunden, dass ico files fast wie bmps sind. Dann hab ich mal ne icofile genommen uund ein .bmp drangehängt, und ich kann es als bmp öffnen!???:L

Edit:
Mit Java gehts aber nicht... :(
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Icons

Also .ico in .bmp umwandeln geht natürlich nicht. Du kannst vermutlich nur betrachten, weil dein Programm anhand des Headers erkennt um welchen Typ es sich handelt und nicht anhand der Endung.
 

Runtime

Top Contributor
Hier wird nur gezeigt, wie man in C, oder C++ mit Icons hantiert, ich möchte aber wissen wie ich so ein Icon einlesen kann und dann ein BufferedImage habe.
 

XHelp

Top Contributor
Ich meinte den Header der Datei (bei Ico glaube ich 00 00 01 00).
Im Ico können ja verschiedene Bilder gespeichert werden. Und jeder von diesen Blöcken hat auch einen Header mit Information.
 

XHelp

Top Contributor
So genau weiß ich es nicht, aber ich dächte die Icons fangen mit den oben genannten 4 Bytes an. Ob es stimmt müsste theoretisch auf der Seite beschrieben werden.
 

Runtime

Top Contributor
4 bytes? Meinst du das:
Code:
typedef struct
{
    WORD           idReserved;   // Reserved (must be 0)
    WORD           idType;       // Resource Type (1 for icons)
    WORD           idCount;      // How many images?
    ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
} ICONDIR, *LPICONDIR;
Edit:
Warum kann ein Icon mehrere Bilder enthalten? Ist es animiert?
 
Zuletzt bearbeitet:

XHelp

Top Contributor
WORD ist 2 Byte, und in der Struktur sind alleine schon 3 da, also kommt es mit Gesamtlänge 4 Byte nicht so ganz hin.

ICO ist nicht animiert, aber afaik kann man Icons für verschiedene Größen in einer ico Datei speichern.
Ich habe mich selber mit der Spezifikation nicht beschäftigt, deswegen auch die ziemlich allgemein gehaltenen Antworten.
 

Runtime

Top Contributor
An Icon file, which usually has the ICO extension, contains one icon resource. Given that an icon resource can contain multiple images, it is no surprise that the file begins with an icon directory:

Code:
typedef struct
{
    WORD           idReserved;   // Reserved (must be 0)
    WORD           idType;       // Resource Type (1 for icons)
    WORD           idCount;      // How many images?
    ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
} ICONDIR, *LPICONDIR;

Wenn idReserved = die 4 bytes am anfang ist, ist ein WORD aber 32 bit.
 
G

Guest2

Gast
Moin,

sieh Dir doch einfach mal ein .ico File mit dem Hexeditor an. Das sieht z.B. so aus.

Code:
 00	00	01	00	01	00  ...

Da der erste Wert als

Code:
 WORD           idReserved;   // Reserved (must be 0)

ausgewiesen ist, kann ein WORD gar keine 4Bytes lang sein, da es dann nicht mehr 0 wäre.

In den Dokumentationen zu Dateiformaten von Microsoft kannst Du davon ausgehen das ein WORD immer 2 Byte lang ist und als little endean in der Datei steht.

Für die Datei von oben gilt dann:

Code:
    WORD           idReserved = 00 00 = 0
    WORD           idType     = 01 00 = 1
    WORD           idCount    = 01 00 = 1


Gruß,
Fancy
 

Ähnliche Java Themen

Neue Themen


Oben