## ICO (Windows Icon) file format plugin for Photoshop

Copyright 2002-6 Toby Thain, toby@telegraphics.com.au

The plugin gives Photoshop the ability to directly Open and Save Windows icon (.ICO) files. Download the latest version here.

### Tested with:

- Photoshop all versions 3.0-7.0, CS, CS2 on PowerPC Macintosh (OS X, OS 9 and Classic)
- Photoshop 4.0 / MacOS 8.0 on 68K Macintosh
- Photoshop 5.0, 7.0 & CS on Windows 98/NT and XP.
- Paint Shop Pro 9 (may not work correctly with earlier versions due to PSP plugin compatibility issues)
- reported to work with Photoshop Elements 3.0 (Mac US$79.99/Win US$89.99. Prices at time of writing)

### Free software - donation requested

This program is free software licensed under the terms of the GNU General Public License. If you use this program and like it, please use PayPal to send the author what you think it is worth (US$5 suggested):

The program is fully supported. Please contact the author with any bug reports, suggestions or comments.

### To install

1. Move the plugin into the "File Formats" folder inside your Photoshop Plugins folder:
   - On Windows, ICOFormat.8bi
   - On OS X/Classic, icoformat
   - On 68K MacOS, icoformat(68K)
2. Quit and relaunch Photoshop, if it's already running.

### To use the plugin

- Use Photoshop's Open command (File menu) to open .ICO files (which will now appear in the file browser)
- Use Photoshop's Save command to create .ICO files.

### Having trouble?

- If you are not sure if the plugin is correctly installed, look for "ICO (Windows Icon)" under Photoshop's "About Plug-in" menu (on Windows, look under "Help"; on OS X, under "Photoshop"). If it is not listed:
  - check you have downloaded the correct version (Windows/Mac)
  - is it in the "File Formats" subdirectory of Photoshop's "Plugins" folder?
  - have you quit and re-launched Photoshop?
- The plugin is not a Filter or Import/Export plugin, so don't look for it there. It appears as a format option when Opening or Saving (eligible images).
- The ICO format does not allow images more than 256 pixels high or wide.
- Only Bitmap, Grey Scale, Indexed and RGB mode images, no more than 8 bits per channel, can be saved as ICO.
- Using Windows98? If you see messages about "Assertion Failed", please download this alternative build. (Thanks to Qwerky for pointing out this issue.)

### Features

- Reads and writes .ICO files of 1,4,8 bits as Indexed mode images, and 16,24,32 bit as RGB mode
- If an input file contains multiple icons, a dialog box prompts to select one (indicates pixel size and colour depth of each contained icon).
- ICO files created by the plugin contain one icon only.
- In version 1.7 and later, when saving an icon, it is possible to save in either standard ICO or PNG (Vista) compressed formats. The latter format is not compatible with all software.

### How to add a "favourites" icon (favicon, favicon.ico) to your web site

1. Create the file named favicon.ico with your desired graphic (as "standard ICO" format, if asked when saving by version 1.7)
2. Put it at the root level of your web site. (If you want Internet Explorer to recognise it, it must be 16x16 pixels in size.)
3. Put a tag as follows in the `<HEAD>...</HEAD>` section of your top-level HTML page (home page):

       <LINK REL="SHORTCUT ICON" HREF="favicon.ico">

### More references:

- www.golivein24.com
- photoshopsupport.com
- www.thesitewizard.com
- www.webdevelopersjournal.com
- www.winterdrache.de (for Linux)
- rock13.com
- www.davesite.com
- www.latext.com (Using a favicon with Safari)
- msdn.microsoft.com

...and many others.

### About transparency

The ICO format has an inherent 1 bit transparency mask (0 = opaque, 1 = transparent), called the AND bitmap.

- When reading or saving an RGB mode image in Photoshop 6.0 or later, layer transparency is used for the mask
- If the image is Indexed mode, and uses a "transparent index", this will be used to set the icon mask
- In other cases, the ICO mask is treated as an alpha channel (black = 0 = opaque, white = 255 = transparent)
- In PNG (Vista) format icons, the alpha channel is simply stored as part of the PNG. There is no separate mask.

### Saving indexed mode images

To ensure output files are as compact as possible, the smallest pixel depth is chosen sufficient to represent the colours used by the icon:

- RGB mode: no colour table
- Indexed/Grey Scale mode with >16 colours: 8 bits per pixel (up to 256 colours in colour table)
- Indexed/Grey Scale mode with >2 colours: 4 bits per pixel (up to 16 colours in colour table)
- Bitmap or Indexed/Grey Scale mode with 2 or fewer colours: 1 bit per pixel (up to 2 colours in colour table)

### A note on file sizes (Mac only)

Do not be alarmed if the Mac Finder shows an unexpectedly large file size for ICO files saved out of Photoshop. The ICO itself is stored in the data fork and is as small as possible (see above).

The Finder's size calculation is increased by Photoshop's prolific "metadata" in the resource fork, and does not truly reflect the size of the ICO data. (This is stored for all files saved out of Photoshop, regardless of format, and whether image thumbnails and previews are enabled in Preferences.) Finder's "K" size is also affected by the volume's minimum allocation size (often 4 or 8K depending on partition size).

On upload to a web site, the data fork alone is copied and the resource fork is stripped, and so this extra data (and Finder's padded figure) has no effect or relevance whatsoever. The "true" logical size of the ICO file can be confirmed in OS X's Terminal with `ls -l` in the icon's directory (or `files -x br` in MPW Shell).

### About 32-bit (Windows XP) icons

The plugin can create 32-bit icons with 8-bit alpha transparency. This will occur in two cases:

1. in Photoshop 6.0 or later, saving a layered RGB image (i.e. not flattened)
2. in any version of Photoshop, saving a flat RGB image with 2 or more alpha channels.

In the first case, the layer transparency will be used as the ICO alpha. The 1-bit "AND mask" is taken from the first alpha channel, or if there is no available alpha channel, is derived from layer transparency.

In the second case, the first alpha channel is used to create the 1-bit "AND mask", and the second alpha channel becomes the 8-bit ICO alpha.

In both cases, the colour data is set to zero (black) where the icon is transparent. This should produce the desired result (complete transparency over the background).

### Still confused, or having trouble?

Don't hesitate to write to us.