# ICO (Dateiformat)

ICO ist die Dateinamensendung eines Dateiformats, das im Betriebssystem Microsoft Windows zur Speicherung von Icons verwendet wird. Anders als Windows Bitmaps (BMP) oder viele andere Grafikdateiformate können ICO-Dateien mehrere Einzelbilder enthalten, die das System je nach benötigter Auflösung und Farbtiefe benutzt. Auch andere Betriebssysteme wie Linux oder Mac OS X können mithilfe offen verfügbarer Programmbibliotheken damit umgehen.
Jedoch ist dies nicht als Synonym für Icons verwendbar, da praktisch jedes Grafikdateiformat für Icons verwendet werden kann. Für macOS steht beispielsweise das ICNS-Format zur Verfügung und im X-Window-System wird unter anderem das textbasierte XBM- bzw. XPM-Format genutzt. Unter modernen Plattformen werden zunehmend auch Vektorgrafiken (z. B. SVG) oder Rastergrafiken (z. B. PNG) in unterschiedlichen Größen und Formen als Icon genutzt.

## Geschichte

Die ursprüngliche Standard-Auflösung war 32×32 Pixel mit 16 Farben. Mit der Einführung von Windows 3.0 waren 256 Farben möglich. Jedes Einzelbild sollte eine gleich große 1-Bit-Grafik enthalten, die angibt, ob das jeweilige Pixel deckend oder mit XOR-Operation über den Hintergrund gezeichnet werden soll, wodurch sich Transparenz oder ein Negativbild des Hintergrunds erhalten lassen, wenn das eigentliche Bild an der Stelle schwarz bzw. weiß ist.
Seit Windows XP sind Icons und Cursors mit Alphakanal möglich. Die mitgelieferten Icons haben zumeist Alphakanäle und eine maximale Auflösung von 48×48 Pixel. Seit Windows Vista können ICO-Dateien bis zu 256×256 Pixel groß sein und in dem Fall optional als PNG komprimiert werden.
Betriebssystemübergreifende Verwendung findet das Format beim Favicon, einem Icon, das viele Webbrowser neben der URL oder in den Lesezeichen anzeigen.
Die Icons passen sich jeweils an das Zeitalter im Design an. Während früher die Icons aufgrund der Grenzen der Technik in 32×32 Pixeln dargestellt wurden, passte man sich an die quietschbunte und verspielte Farbenlandschaft aus Windows XP an, und Windows Vista, 7 und 8 nutzten Icons in Anlehnung an den Frutiger Aero-Designstil, der auch eine realitätsgetreuere Anmutung von Icons umsetzt. Der Trend zur vereinfachten Darstellung wie Flat Design findet sich in Windows 10 und im Fluent UI-Design von Windows 11 und in zeitgleichen Microsoft-Programmen wieder.
Während früher innerhalb von ICO-Dateien Symbole in verschiedenen Farbtiefen gespeichert werden, greift Windows 11 nur auf 32 Bit Farbtiefe zurück. Zu Windows 3.x- und Windows 9x-Zeiten gab es jedoch auch meist monochrome Entsprechungen zum polychromen Icon. Icons werden üblicherweise in EXE-, DLL- und weiteren Dateitypen gelagert. Ein klassisches Beispiel ist MORICONS.dll, das aus der Windows 3.0-Ära etliche Icons enthält. Längere Zeit waren Dateien wie imageres.dll, DDORes.dll, netshell.dll und shell32.dll sehr iconträchtig. Ab Windows 10 1903 sind diese Icons jedoch zu *.dll.mun umgezogen. Die originale moricons.dll aus Windows 3.0 findet man auch noch in Windows 11 24H2 unter C:\Windows\System32 wieder.
Durch moderne ultrahochauflösende Bildschirme können gerasterte ICO-Dateien bei 256 Pixel in der Breite zu klein wirken. In vielen Fällen jedoch eignet sich das SVG-Format sehr gut, das oftmals von Icon-Paketen für Linux-Betriebssysteme genutzt wird. Zwar bieten SVG-Dateien für verschiedene Größen keine eigenen Grafiken und Farbtiefen, jedoch stellt dies in der heutigen Zeit kein Problem mehr dar, da Displays heutzutage üblicherweise mindestens 16.777.216 Farben darstellen können und nur noch selten unterhalb von HD auflösen.

## MIME-Type

Es existieren zwei verschiedene Definitionen für den MIME-Type:
* image/vnd.microsoft.icon
* image/x-icon
Der MIME-Type image/vnd.microsoft.icon wurde 2003 von einem Dritten bei der IANA eingereicht um die damals genutzten unterschiedlichen Typen wie text/ico, image/ico, image/icon und application/ico zu vereinheitlichen. Microsoft benutzte aber weiterhin image/x-icon in seinen Programmen und speziell im Web relevanten Internet Explorer ohne die Einreichung zu korrigieren oder adaptieren. Deshalb hat dieser MIME-Type eine höhere Verbreitung in Standards und Programmen.

## Ähnliche Dateiformate

Mehrere solche Icons können in Programmressourcen von PE- und NE-Dateien eingebunden sein. Technisch gesehen werden in so einer Datei alle Einzelbilder mit einer Nummer versehen und einzeln gespeichert (so genannte Icon Entries), zusätzlich zu einem „Inhaltsverzeichnis“ (Group Icon), das eine Nummer oder (in seltenen Fällen) einen Namen hat und die Einzelbilder wieder zusammenfasst. Die im alphabetisch ersten Group Icon angegebenen Einzelbilder bilden das Standard-Programmsymbol von EXE-Dateien. Sehr ähnlich verhält es sich mit Icon-Library-Dateien (Endung: .icl), die ebenfalls auf dem PE-Dateiformat basieren, aber nicht ausgeführt werden können. Auch hier wird eine Vorschau als Dateisymbol verwendet.
Bei dem Format für Mauszeiger – die auch sogenannten Cursor-Dateien von Windows (mit der Endung .cur) – handelt es sich, bis auf unterschiedliche Kennbytes im Dateivorspann (Magische Zahl), um das gleiche Format. Zusätzlich kann solch eine Cursor-Datei noch Informationen zum sogenannten hot spot beinhalten, also für den Punkt, mit dem tatsächlich geklickt wird. Zudem können mehrere Cursor in einer RIFF-Datei zu einem sogenannten animierten Cursor zusammengefasst werden.
ICO-Dateien können mit verschiedenen Grafikprogrammen bearbeitet bzw. aus anderen Formaten konvertiert werden, etwa CorelDraw, IrfanView, XnView oder GIMP. Allerdings schöpfen nicht alle Mehrzweckprogramme den vollen Funktionsumfang (mehrere Einzelbilder, Alphatransparenz, PNG-Komprimierung) des Dateiformats aus. In dem Fall muss auf spezialisierte Software zurückgegriffen werden.

## Bildbeispiele

* 256 Pixel in der Breite sind für Icons in neueren Windows-OS üblich
* Icons wurden früher in 16 Farben …
* … später in 256 Farben …
* … und werden nun in 16.777.216 Farben + 256 Transparenzabstufungen gespeichert.
* Icons aus der Windows 95-Ära haben klare Farben und 32 Pixel in der Länge
* Damals hatten Icons auch einfarbige Varianten
* Icons wie dieses können in Windows 3.x dank höherer Farbtiefe mehr Farben wiedergeben
* Das ICO-Dateiformat gab es bereits in einer Beta von Windows 1.0 (hier GRAPH.ico)
* Ein Icon aus moricons.dll
* Gerastertes Icon mit 16 Pixeln in der Breite
* Gerastertes Icon mit 20 Pixeln in der Breite
* Gerastertes Icon mit 24 Pixeln in der Breite
* Gerastertes Icon mit 32 Pixeln in der Breite
* Gerastertes Icon mit 40 Pixeln in der Breite
* Gerastertes Icon mit 48 Pixeln in der Breite
* Gerastertes Icon mit 60 Pixeln in der Breite
* Gerastertes Icon mit 64 Pixeln in der Breite
* Gerastertes Icon mit 72 Pixeln in der Breite
* Gerastertes Icon mit 80 Pixeln in der Breite
* Gerastertes Icon mit 96 Pixeln in der Breite
* Gerastertes Icon mit 256 Pixeln in der Breite
* Vektorisiertes Icon zum Vergleich