ICO

ICO is a Microsoft Windows icon format.

ICO files can have multiple icon images of different sizes and color types in the same file, so that programs displaying them can pick the best image for a particular use.

Format
An ICO file begins with a 6-byte header, followed one or more 16-byte directory entries (one for each image). Each entry contains information about the image's size, color format, and location in the file.

The rest of the file contains the actual images, which usually use a variant of BMP format (without the file header, and with a transparency mask). Alternatively, they may use PNG format.

ICO format is very similar to CUR (cursor) format.

Identification
Files begin with bytes.

Note that this byte sequence is not very discriminating. Other formats that can begin this way include Macintosh resource file and JBIG.

Changing default icons for Windows file types
Versions of Windows up through XP had a nice and simple means of changing default icons for file types through the properties tab you can pull up for any file/folder. However, Microsoft in its infinite wisdom (or wisdumb?) decided to change that starting in Vista, removing the option and making the changing of icons something that practically requires a PhD in computer science. (Changing icons for folders is still a simple option, but not for files.) If you want to try it, here's how:


 * Run Registry Edit (Regedit.exe from the start menu)


 * Navigate to HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .ext \ UserChoice, where .ext is replaced by the file extension you are trying to modify


 * If no UserChoice item exists here, go up one level to the one named after the extension you're looking for.


 * Note the value of this field, which is what the file type in question is known as to Windows.


 * Now go to HKEY_CLASSES_ROOT \ yourfiletype \ DefaultIcon in Registry Edit, where yourfiletype is replaced with the value found in the extension data above.


 * Change the value here to the path/filename of the desired icon. If no DefaultIcon item exists, create one under the file type.


 * Icon paths can be the name of a .ico file, or an .exe or .dll that contains an icon; in cases where multiple icon images are in a file, the name needs to be suffixed with a comma and a number which gives the index of the icon within the file, where 0 is the first one. The icon picker which you can get while changing icons for a folder/directory can be helpful here; if you choose an exe/dll file, it shows all icons in the file and if you count from left to right and top to bottom you can determine the index of the one you want.

Software
Many image viewers and web browsers support ICO format.
 * icoutils (icotool)
 * ImageMagick
 * ImageMagick

Sample files

 * http://cd.textfiles.com/ccbwindows93/ICONS/
 * https://telparia.com/fileFormatSamples/image/ico/