Interested Article - ICO (формат файла)

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

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

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

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

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

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

Начиная с Windows Vista , формат поддерживает размеры значков более 256 пикселей на сторону и сжатие с помощью формата PNG . В этом случае маска не содержится в файле отдельно, а генерируется автоматически из альфа-канала PNG изображения.

Формат файла

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

Заголовок

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

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

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

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

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

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

Часть полей может содержать 0 и легко получается из других данных; например, если изображение не хранится в формате PNG , тогда количество битов на пиксель рассчитывается на основе информации о размере растра, а также его ширине и высоте.

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

См. также

Примечания

  1. Chen, Raymond (амер. англ.) . The Old New Thing - Microsoft Developer Blogs (22 октября 2010). Дата обращения: 27 ноября 2022. 29 ноября 2022 года.

Ссылки

Источник —

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