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

12-07-2023

ICO, Windows icon
Расширение

.ico

MIME

image/vnd.microsoft.icon[1]

Разработан

Microsoft

Тип формата

растровая графика

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

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

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

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

Значки бывают в естественном цвете (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 Указывает абсолютное смещение растра в файле.

Примечания

  1. http://www.iana.org/assignments/media-types/image/vnd.microsoft.icon

См. также

Ссылки

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

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47