Geschiedenisles: Wat is een .ico-bestand? Het pictogramformaat van Windows
Het pictogramformaat van Windows — één bestand met meerdere formaten en kleurdiepten, een kleine header en een map vooraan, PNG-gecomprimeerde afbeeldingen sinds Windows Vista, een .cur-broertje voor aanwijzers en de favicon.ico die elke website nog steeds aanbiedt.

TL;DR
Een .ico is een Windows-pictogrambestand. Eén bestand kan meerdere afbeeldingen van hetzelfde pictogram bevatten in verschillende formaten en kleurdiepten, en Windows kiest de best passende voor het bureaublad, een titelbalk of een dialoogvenster. De opbouw is eenvoudig: een header van 6 bytes (gereserveerd, type, aantal afbeeldingen), één mapvermelding van 16 bytes per afbeelding en daarna de gegevens. Klassieke vermeldingen zijn bitmapgegevens (DIB) met een AND-masker voor transparantie; sinds Windows Vista kan een vermelding een volledige PNG zijn, waardoor pictogrammen van 256×256 praktisch werden. Het aanwijzerformaat .cur is bijna een tweeling (type 2 in plaats van 1, plus een hotspot). Op het web begon Internet Explorer 5 (maart 1999) favicon.ico op te vragen in de hoofdmap van websites. Voor een gewone afbeelding zet je .ico om naar PNG op je eigen pc — Legacy File Converter doet dat lokaal, zonder upload.
Wat is een .ico-bestand?
Een .ico-bestand is het pictogramformaat van Windows. De meeste afbeeldingsbestanden bevatten één afbeelding; een ICO-bestand bevat een pictogramresource — een kleine verzameling afbeeldingen die allemaal hetzelfde pictogram tonen, elk getekend in een ander formaat en/of een andere kleurdiepte. Microsofts eigen uitleg, het artikel Icons van John Hornick gedateerd 29 september 1995, zegt het duidelijk: één ICO-bestand, of een pictogramresource in een EXE of DLL, kan meerdere pictogramafbeeldingen bevatten, elk met een eigen formaat en/of kleurdiepte.
Daarom komt de zoekvraag “wat is een .ico-bestand” meestal van iemand die er een vond in een programmamap, een download van het web of een oud project en zich afvraagt waarom de fotoviewer alleen een piepklein vierkantje toont — of niets. Het bestand is geldig; het is gewoon een container met pictogramafbeeldingen, geen gewone foto. Voor verwante formaten op deze site, zie Geschiedenisles: Wat is een .bmp-bestand? en Geschiedenisles: Wat is een .png-bestand?.
Vroege Windows-pictogrammen en het tijdperk van één formaat
Pictogrammen horen bij Windows sinds de vroegste bureaubladomgevingen, maar het vroege systeem dacht in één pictogramformaat. Het Microsoft-artikel uit 1995 merkt op dat de oorspronkelijke functies zoals LoadIcon, ExtractIcon en DrawIcon “overgebleven waren uit de 16-bitstijd, toen het systeem maar één pictogramformaat kende”, en alles wat ze krijgen uitrekken tot het grote standaardformaat.
Met Windows 95 en de daaropvolgende Windows NT-versies hield Windows kleine en grote pictogrammen bij voor zowel het systeem als de shell, en nieuwe functies (de Ex-varianten, LoadImage, DrawIconEx) konden om een specifiek formaat vragen. De richtlijnen uit 1995 moedigden ontwikkelaars aan om minstens 16×16 en 32×32 in 16 kleuren plus 48×48 in 256 kleuren mee te leveren. Het formaat kon al lang ongebruikelijke formaten bevatten; Windows haalde het pas in om ze te gebruiken.
Eén bestand, veel formaten en kleurdiepten
Als Windows een pictogram nodig heeft, loopt het de afbeeldingen in de resource na. Volgens Microsofts regels uit 1995 kiest het de afbeelding waarvan het formaat het dichtst bij het gevraagde ligt; delen meerdere dat formaat, dan krijgt de afbeelding die past bij de kleurdiepte van het scherm de voorkeur, anders de diepste die die niet overschrijdt. Kleine formaten zijn niet zomaar verkleinde kopieën — ontwerpers tekenen ze vaak opnieuw zodat een 16×16-versie leesbaar blijft.
Microsofts pictogramrichtlijnen voor Windows Vista noemden later als volledige set voor toepassingspictogrammen 16×16, 32×32, 48×48 en 256×256, met 32-bits artwork (inclusief alfa) plus paletversies in 8 bits en 4 bits voor situaties als extern bureaublad. Een klein .ico-bestand kan dus een dozijn afbeeldingen of meer bevatten — precies wat je ziet als je het opent in een pictogrameditor.
Veel afbeeldingen, één pictogram
Toont een viewer een afwijkende of piepkleine afbeelding, dan koos hij waarschijnlijk één vermelding uit meerdere. Omzetten naar PNG betekent meestal één vermelding kiezen — normaal de grootste — en die exporteren.
Hoe een .ico-bestand is opgebouwd
De opbouw past in één alinea. Het bestand begint met een ICONDIR-header van drie woorden van 2 bytes: een gereserveerde waarde die 0 moet zijn, een type dat 1 is voor pictogrammen en een aantal afbeeldingen. Daarna volgt per afbeelding één ICONDIRENTRY — elk 16 bytes — met breedte, hoogte, aantal kleuren, vlakken, bits per pixel, het aantal bytes aan afbeeldingsgegevens en de offset waar die gegevens in het bestand beginnen.
Elke klassieke afbeelding is een DIB (apparaatonafhankelijke bitmap) — een BITMAPINFOHEADER, een optionele kleurentabel, het XOR-masker (de kleurpixels) en een 1-bits AND-masker dat transparante gebieden markeert. Microsoft wijst op een klassieke valkuil: de hoogte in de header is de gecombineerde hoogte van beide maskers en lijkt daardoor twee keer zo groot als de echte pictogramhoogte. In dezelfde familie gebruiken pictogrammen in EXE- en DLL-bestanden vrijwel dezelfde structuren als RT_GROUP_ICON- en RT_ICON-resources.
PNG in het pictogram sinds Windows Vista
Grotere pictogrammen maakten bitmapgegevens zwaar. Een artikel in MSDN Magazine uit 2008 over het decoderen van Windows Vista-pictogrammen legt uit dat de groeiende bitmaps te veel ruimte op schijf en in het geheugen innamen, dus koos Microsoft voor PNG: pictogrammen in Windows Vista kunnen PNG-afbeeldingen insluiten in plaats van DIB’s, waardoor 256×256-pictogrammen in 32 bits praktisch werden tegen een fractie van de grootte. Microsofts Vista-richtlijnen zeggen dat alleen de 256×256-afbeelding gecomprimeerd moet worden en kleinere formaten in klassieke vorm blijven.
Een breedte- of hoogteveld van één byte kan 256 niet opslaan, dus een 0 in de mapvermelding wordt gelezen als 256. Voor software die vóór Vista is geschreven, is een PNG-gecomprimeerde vermelding onbekende data — een van de redenen waarom sommige oudere tools vastlopen op moderne .ico-bestanden, terwijl Windows ze zelf prima toont.
Oude tool, nieuw pictogram
Een editor uit de Windows XP-tijd kan de kleine bitmapvermeldingen van een modern pictogram misschien openen, maar faalt op de 256×256-PNG-vermelding — of weigert het hele bestand. Het pictogram is niet beschadigd; het programma is gewoon ouder dan PNG-in-ICO.
Het .cur-broertje voor aanwijzers
Muisaanwijzers gebruiken een vrijwel identiek formaat met de extensie .cur. Het Microsoft-artikel uit 1995 zegt dat aanwijzers “zeer vergelijkbaar met pictogrammen” zijn — zo vergelijkbaar dat de voorbeeldeditor voor pictogrammen .CUR-bestanden kon lezen door één controle te versoepelen: het header-type 2 voor aanwijzers in plaats van 1 voor pictogrammen. Het MSDN-artikel uit 2008 herhaalt de regel: het tweede woord is 1 voor pictogrammen en 2 voor aanwijzers.
De belangrijke toevoeging van een aanwijzer is de hotspot, de pixelcoördinaten die als punt van de aanwijzer gelden. Zoals Raymond Chen beschrijft op The Old New Thing, beginnen afbeeldingsresources van aanwijzers met de x- en y-coördinaten van de hotspot vóór de bitmapgegevens. Geanimeerde aanwijzers (.ani) zijn een apart formaat en vallen buiten deze les.
favicon.ico op het web
Het .ico-formaat ontsnapte via de browser van het bureaublad. Internet Explorer 5, uitgebracht in maart 1999, vroeg een bestand met de naam favicon.ico op in de hoofdmap van een site wanneer een gebruiker die aan Favorieten toevoegde, en toonde dat pictogram in de lijst met Favorieten. Raymond Chen legde later uit dat IE er alleen naar zocht wanneer een pagina aan Favorieten werd toegevoegd, niet bij elk bezoek, om servers niet te belasten. Pagina’s konden ook naar een andere locatie verwijzen met een link-element in de HTML.
Browsers accepteren tegenwoordig ook andere formaten voor sitepictogrammen, maar veel sites houden nog steeds een favicon.ico in de hoofdmap, en het IE-team van Microsoft merkte op dat het vermogen van ICO om meerdere formaten te bevatten past bij de vele plekken waar een sitepictogram verschijnt — tabbladen, favorieten, snelkoppelingen. Een .ico in je map Downloads is dus vaak gewoon een sitepictogram dat van het web is opgeslagen.
Zo zet je .ico lokaal om naar PNG
.ico hernoemen naar .png werkt niet: het bestand begint met de ICONDIR-header, niet met een PNG-handtekening, en kan veel afbeeldingen bevatten. Een echte conversie leest de map, kiest een vermelding — meestal de grootste —, decodeert de bitmap- of PNG-gegevens, past het transparantiemasker toe en schrijft een gewone PNG die het alfakanaal behoudt. Kies JPG alleen als je geen transparantie nodig hebt.
Legacy File Converter opent .ico-bestanden op je eigen Windows-pc en zet ze om naar PNG of JPG — er wordt niets geüpload, wat telt als de pictogrammen bij een klantproject of een interne toepassing horen. Zo maak je rustig van legacy-bestanden zoals oude pictogrammensets afbeeldingen die elke toepassing kan openen. Voor aangrenzende lessen, zie BMP, PNG en WebP.
Gerelateerde artikelen
Klaar om je oude bestanden te openen?
Begin gratis en ontgrendel daarna onbeperkt converteren met een eenmalige Standard-licentie van $79.95. Download het Windows-installatieprogramma – alle functies voor tot 10 bestanden.
Gratis proefversie
Alle functies van de app · tot 10 bestanden
Windows 10 of 11
Dezelfde gratis proefversie als altijd – download het Windows-installatieprogramma en converteer lokaal op je pc.
Direct Windows-installatieprogramma · offline MSI
Is dit veilig? — uitgever, installatieprogramma en hulp bij SmartScreen
Vereist Windows 10 of 11. Geen abonnementen. 100% Windows-native.