ICO (формат файла)

ICO (Windows icon) — формат хранения файлов значков в Microsoft Windows.

ICO, Windows icon
Расширение .ico
MIME-тип image/vnd.microsoft.icon[1]
Разработчик Майкрософт
Тип формата растровая графика

Формат ICO аналогичен формату CUR (Windows cursors), предназначенному для хранения курсоров. Отличие состоит в численном значении одного поля в заголовочной структуре и интерпретации значений двух других полей этой же структуры.

Один ICO-файл содержит один или несколько значков разных размеров и разрешений. Размер значка может быть любым, но наиболее употребимы квадратные значки со стороной 16, 32 и 48 пикселей. Также используются значки с размером 24, 40, 60, 72, 92, 108, 128 пикселей.

Начиная с Windows 98/2000, формат поддерживает внедрение изображений в формате JPEG и PNG, но обычно данные значков хранятся в несжатом виде.

Значки бывают в естественном цвете (True Color, глубина цвета 24 бит), High Color (глубина цвета 16 бит) или с фиксированной палитрой (из двухсот пятидесяти шести, шестнадцати или всего из двух цветов). В этом случае число, соответствующее каждому пикселю, указывает не на цвет, а на номер цвета в палитре.

По своей структуре изображения в файле ICO наиболее близки к BMP, но принципиально отличаются от них наличием дополнительного изображения — маски, накладываемой на задний план при помощи операции побитового «И», что позволяет реализовать (полную) прозрачность рисунка. Последующее наложение основного изображения с помощью «исключающего ИЛИ» может даже дать «инверсные» пиксели в тех местах, где задний план не был замаскирован.

Кроме того, начиная с Windows XP поддерживаются 32-битные значки — каждому пикселу соответствует 24-бита цвета и 8-битный альфа-канал, позволяющий реализовать 256 уровней частичной прозрачности. С помощью альфа-канала можно отображать значки со сглаженными (размытыми) краями и тенью, сочетающимися с любым фоном; маска в этом случае игнорируется.

Формат файла

Файл состоит из заголовка фиксированной длины, каталога информации о изображениях и непосредственно изображений.

Заголовок

Заголовок имеет размер 6 байт:

Поле Смещение
(в байтах)
Размер
(в байтах)
Описание
reserved 0 2 Зарезервировано. Всегда 0.
type 2 2 Тип файла:
  • 1 для значков (.ICO)
  • 2 для курсоров (.CUR)

Иные значения недопустимы.

count 4 2 Количество изображений в файле, минимум 1.

Каталог информации об изображениях

Представляет собой последовательные записи фиксированного размера (16 байт), следующие одна за другой. Количество записей определяется полем count заголовка.

Поле Смещение Размер
(в байтах)
Описание
width 0 1 Указывает ширину изображения в точках. Может принимать значения от 0 до 255. Если указано 0, то изображение имеет ширину 256 точек.
height 1 1 Указывает высоту изображения в точках. Может принимать значения от 0 до 255. Если указано 0, то изображение имеет высоту 256 точек.
colors 2 1 Указывает количество цветов в палитре изображения. Для полноцветных значков должно быть 0.
reserved 3 1 Зарезервировано. Должно быть 0. В технической документации Microsoft указано, что это значение всегда должно быть 0, однако значки, которые создаются встроенными средствами .NET (System.Drawing.Icon.Save) содержат в этом поле значение 255.
planes 4 2
  • В .ICO определяет количество плоскостей. Может быть 0 или 1.
  • В .CUR определяет горизонтальную координату «горячей точки» в пикселях относительно левого края изображения.
bpp 6 2
  • В .ICO определяет количество битов на пиксель (bits-per-pixel). Это значение может быть 0, так как легко получается из других данных; например, если изображение не хранится в формате PNG, тогда количество битов на пиксель рассчитывается на основе информации о размере растра, а также его ширине и высоте. Если же изображение хранится в формате PNG, то соответствующая информация хранится в самом PNG. Однако указывать в этом поле 0 не рекомендуется, так как логика выбора наилучшего изображения в различных версиях Windows неизвестна.
  • В .CUR определяет вертикальную координату «горячей точки» в пикселях относительно верхнего края изображения.
size 8 4 Указывает размер растра в байтах
offset 12 4 Указывает абсолютное смещение растра в файле.

См. также

Примечания

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.