The ICO file format is an
image file format
An Image file format is a file format for a digital image. There are many formats that can be used, such as JPEG, PNG, and GIF. Most formats up until 2022 were for storing 2D images, not 3D ones. The data stored in an image file format may b ...
for
computer icon
In computing, an icon is a pictogram or ideogram displayed on a computer screen in order to help the user navigate a computer system. The icon itself is a quickly comprehensible symbol of a software tool, function, or a data file, accessible on t ...
s in
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for se ...
. ICO files contain one or more small images at multiple sizes and
color depth
Color depth or colour depth (see spelling differences), also known as bit depth, is either the number of bits used to indicate the color of a single pixel, or the number of bits used for each color component of a single pixel. When referring to ...
s, such that they may be
scaled appropriately. In Windows, all
executable
In computing, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instructions", as opposed to a data fil ...
s that display an icon to the user, on the desktop, in the Start Menu, or in Windows Explorer, must carry the icon in ICO format.
The CUR file format is an almost identical image file format for non-animated
cursors in Microsoft Windows. The only differences between these two file formats are the bytes used to identify them and the addition of a hotspot in the CUR format header; the hotspot is defined as the pixel offset (in x,y coordinates) from the top-left corner of the cursor image where the user is actually pointing the mouse.
The
ANI
Ani ( hy, Անի; grc-gre, Ἄνιον, ''Ánion''; la, Abnicum; tr, Ani) is a ruined medieval Armenian city now situated in Turkey's province of Kars, next to the closed border with Armenia.
Between 961 and 1045, it was the capital of the ...
file format is used for
animated Windows cursors.
History
Icons introduced in
Windows 1.0 were 32×32 pixels in size and were monochrome. Support for 16 colors was introduced in
Windows 3.0.
Win32
The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations th ...
introduced support for storing icon images of up to
16.7 million colors (TrueColor) and up to 256x256 pixels in dimensions.
[255x255 icon size limit is implied by 1-]byte
The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable uni ...
and members of but 0 value means 256x256. Windows 95 also introduced a new Device Independent Bitmap (DIB) engine. However, 256 color was the default icon color depth in Windows 95. It was possible to enable
65535 color (Highcolor) icons by either modifying the ''Shell Icon BPP'' value in the registry
or by purchasing
Microsoft Plus!
Microsoft Plus! is a discontinued commercial operating system enhancement product by Microsoft. The last edition is the Plus! SuperPack, which includes an assortment of screensavers, themes, and games, as well as multimedia applications. The Micr ...
for Windows 95. The ''Shell Icon Size'' value allows using larger icons in place of 32×32 icons and the ''Shell Small Icon Size'' value allows using custom sizes in place of 16×16 icons.
Thus, a single icon file could store images of any size from 1×1 pixel up to 256×256 pixels (including non-square sizes) with 2 (rarely used),16, 256, 65535, or 16.7 million colors; but the shell could not display very large sized icons. The notification area of the Windows
taskbar
A taskbar is an element of a graphical user interface which has various purposes. It typically shows which programs are currently running.
The specific design and layout of the taskbar varies between individual operating systems, but generally a ...
was limited to 16 color icons by default until
Windows Me when it was updated to support high color icons.
Windows XP added support for
32-bit color (16.7 million colors plus 8-bit
alpha channel
In computer graphics, alpha compositing or alpha blending is the process of combining one image with a background to create the appearance of partial or full transparency. It is often useful to render picture elements (pixels) in separate pas ...
transparency) icon images, thus allowing semitransparent areas like
shadows,
anti-aliasing, and glass-like effects to be drawn in an icon. Windows XP, by default, employs 48×48 pixel icons in
Windows Explorer. Windows XP can be forced to use icons as large as 256×256 by modifying the ''Shell icon size'' value but this would cause all 32×32 icons throughout the shell to be upscaled.
Microsoft only recommended icon sizes up to 48×48 pixels for Windows XP.
Windows XP can downscale larger icons if no closer image size is available.
Windows Vista added support for 256×256-pixel icons
, as well as support for the
compressed PNG format. Although compression is not required, Microsoft recommends that all 256×256 icons in ICO files should be stored in PNG format to reduce the overall size of the file.
The Windows Vista Explorer supports smoothly scaling icons to non-standard sizes which are rendered on the fly even if an image is not present for that size in the icon file. The Windows Vista shell adds a slider for "zooming" the icon sizes in and out. With users using higher resolutions and high DPI modes, larger icon formats (such as 256×256) are recommended.
MIME type
While the
IANA
The Internet Assigned Numbers Authority (IANA) is a standards organization that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System (DNS), media types, and other Inter ...
-registered
MIME type
A media type (also known as a MIME type) is a two-part identifier for file formats and format contents transmitted on the Internet. The Internet Assigned Numbers Authority (IANA) is the official authority for the standardization and publication o ...
for ICO files is
image/vnd.microsoft.icon
,
it was submitted to IANA in 2003 by a third party and is not recognised by Microsoft software, which uses
image/x-icon
or
image/ico
instead.
[ See the second comment.] Erroneous types
image/ico
,
image/icon
,
text/ico
and
application/ico
have also been seen in use.
Icon resource structure
An ICO or CUR file is made up of an ICONDIR ("Icon directory") structure, containing an ICONDIRENTRY structure for each image in the file, followed by a contiguous block of all image bitmap data (which may be in either
Windows BMP format, excluding the BITMAPFILEHEADER structure, or in
PNG format, stored in its entirety).
Images with less than 32 bits of color depth follow a particular format: the image is encoded as a single image consisting of a color mask (the "XOR mask") together with an opacity mask (the "AND mask").
The XOR mask must precede the AND mask inside the bitmap data; if the image is stored in bottom-up order (which it most likely is), the XOR mask would be drawn below the AND mask. The AND mask is 1 bit per pixel, regardless of the color depth specified by the BMP header, and specifies which pixels are fully transparent(1) and which are fully opaque(0). The XOR mask conforms to the bit depth specified in the BMP header and specifies the numerical color or palette value for each pixel. Together, the AND mask and XOR mask make for a non-transparent image representing an image with 1-bit transparency; they also allow for inversion of the background. The height for the image in the ICONDIRENTRY structure of the ICO/CUR file takes on that of the intended image dimensions (after the masks are composited), whereas the height in the BMP header takes on that of the two mask images combined (before they are composited). Therefore, the masks must each be of the same dimensions, and the height specified in the BMP header must be exactly twice the height specified in the ICONDIRENTRY structure.
32-bit images (including 32-bit BITMAPINFOHEADER-format BMP images
[The classic BITMAPINFOHEADER bitmap format supports storing images with 32 bits per pixel. When saved as a standalone .BMP file, "the high byte in each ixelis not used". However, when this same data is stored inside a ICO or CUR file, Windows XP (the first Windows version to support ICO/CUR files with more than 1 bit of transparency) and above interpret this byte as an alpha value.]) are specifically a 24-bit image with the addition of an 8-bit channel for
alpha compositing
In computer graphics, alpha compositing or alpha blending is the process of combining one image with a background to create the appearance of partial or full transparency. It is often useful to render picture elements (pixels) in separate pas ...
. Thus, in 32-bit images, the AND mask is not required, but recommended for consideration. Windows XP and higher will use a 32-bit image in less than
True color mode by constructing an AND mask based on the alpha channel (if one does not reside with the image already) if no 24-bit version of the image is supplied in the ICO/CUR file. However, earlier versions of Windows interpret all pixels with 100% opacity unless an AND mask is supplied with the image. Supplying a custom AND mask will also allow for tweaking and hinting by the icon author. Even if the AND mask is not supplied, if the image is in Windows BMP format, the BMP header must still specify a doubled height.
It's important to note that in the AND mask, as for the
pixel array of the bitmap, padding bytes must be appended to the end of each row in order to bring up its length to a multiple of four bytes since it's basically a (monochrome) bitmap.
The AND mask of an 8x8 pixels bitmap would have 1 byte of data and 3 bytes of padding(8*8*1bpp = 64 bits/8 = 8 bytes of total rows, so each row is 1 byte and 3 bytes of padding are needed), a 16x16 bitmap's AND mask would have 2 bytes of data and 2 bytes of padding, a 32x32 bitmap's AND mask would have 4 bytes of data and no padding. Note that the quantity of padding bytes needed depend on the dimensions of the bitmap and not its color depth since the AND mask is 1 bit per pixel regardless.
Outline
All values in ICO/CUR files are represented in
little-endian
In computing, endianness, also known as byte sex, is the order or sequence of bytes of a word of digital data in computer memory. Endianness is primarily expressed as big-endian (BE) or little-endian (LE). A big-endian system stores the most si ...
byte order.
Header
Structure of image directory
Referenced image data
All image data referenced by entries in the image directory proceed directly after the image directory. It is customary practice to store them in the same order as defined in the image directory.
Recall that if an image is stored in BMP format, it must exclude the opening , whereas if it is stored in PNG format, it must be stored in its entirety.
Note that the height of the BMP image must be twice the height declared in the image directory. The second half of the bitmap should
be an AND mask for the existing screen pixels, with the output pixels given by the formula . Set the mask to be zero everywhere for a clean overwrite.
PNG format
The ability to read
PNG images from ICO and CUR format images was introduced in
Windows Vista.
A PNG image can be stored in the image in the same way as done for a standard Windows BMP format image, with the exception that the PNG image must be stored in its entirety, with its file header and must be in 32bpp ARGB format.
Icon library
An icon library is a way to package Windows icons. It is typically a 16-bit
New Executable
The New Executable (abbreviated NE or NewEXE) is a 16-bit .exe file format, a successor to the DOS MZ executable format. It was used in Windows 1.0–3.x, Windows 9x, multitasking MS-DOS 4.0, OS/2 1.x, and the OS/2 subset of Windows NT up to ...
or a 32-bit
Portable Executable
The Portable Executable (PE) format is a file format for executables, object code, DLLs and others used in 32-bit and 64-bit versions of Windows operating systems. The PE format is a data structure that encapsulates the information necessary f ...
binary file having .ICL extension with icon
resource
Resource refers to all the materials available in our environment which are technologically accessible, economically feasible and culturally sustainable and help us to satisfy our needs and wants. Resources can broadly be classified upon their av ...
s being the packaged icons.
Windows Vista and later versions do not support viewing icons from 16-bit (
New Executable
The New Executable (abbreviated NE or NewEXE) is a 16-bit .exe file format, a successor to the DOS MZ executable format. It was used in Windows 1.0–3.x, Windows 9x, multitasking MS-DOS 4.0, OS/2 1.x, and the OS/2 subset of Windows NT up to ...
) files.
See also
*
Apple Icon Image format
*
BMP file format
The BMP file format, also known as bitmap image file, device independent bitmap (DIB) file format and bitmap, is a raster graphics image file format used to store bitmap digital images, independently of the display device (such as a graphics adap ...
*
Computer icon
In computing, an icon is a pictogram or ideogram displayed on a computer screen in order to help the user navigate a computer system. The icon itself is a quickly comprehensible symbol of a software tool, function, or a data file, accessible on t ...
*
Favicon
A favicon (; short for favorite icon), also known as a shortcut icon, website icon, tab icon, URL icon, or bookmark icon, is a file containing one or more small icons, associated with a particular website or web page. A web designer can create ...
*
List of icon software
Notes
References
External links
Icon design guidelines for Windows Vista iconsIcon design guidelines for Windows 10 app iconsIcons (1995 Microsoft Technical Article)* The evolution of the ICO file format
Part 1Part 2Part 3Part 4
A Look Inside Windows Icons, Part 1 - PC Mag Jan 26, 1993 Vol.12 No. 2A Look Inside Windows Icons, Part 2 - PC Mag Feb 9, 1993 Vol.12 No. 3Enable High Color Icons in Windows 95 and laterEnhance Java GUIs with Windows Icons
{{Graphics file formats
Raster graphics file formats
Microsoft Windows multimedia technology
Computer icons