ICO (формат файла)
Расширение имени файла | .ico |
---|---|
Тип интернет-СМИ | image/x-icon [1] (но см. ниже ) |
Единый идентификатор типа (UTI) | com.microsoft.ico |
Разработано | Майкрософт |
Тип формата | Формат графического файла для компьютерных значков |
Контейнер для | BMP и PNG |
Распространено на | CUR |
Расширение имени файла | .помещать |
---|---|
Тип интернет-СМИ | изображение/vnd.microsoft.icon |
Единый идентификатор типа (UTI) | com.microsoft.cur |
Разработано | Майкрософт |
Тип формата | Формат графического файла для курсоров мыши |
Контейнер для | БМП |
Расширено с | ICO |
Формат файла ICO — это формат файла изображения для значков компьютера в Microsoft Windows . Файлы ICO содержат одно или несколько небольших изображений разных размеров и глубины цвета , поэтому их можно масштабировать соответствующим образом. В Windows все исполняемые файлы, отображающие значок пользователю на рабочем столе, в меню «Пуск» или в проводнике, должны иметь значок в формате ICO.
Формат файла CUR практически идентичен формату файла изображения для неанимированных курсоров в Microsoft Windows. Единственные различия между этими двумя форматами файлов — это байты, используемые для их идентификации, и добавление активной точки в заголовок формата CUR; горячая точка определяется как смещение пикселя (в координатах x,y) от верхнего левого угла изображения курсора, куда пользователь фактически указывает мышью. [ нужна ссылка ]
Формат ANI файла используется для анимированных курсоров Windows .
История
[ редактировать ]Значки, представленные в Windows 1.0, имели размер 32×32 пикселя и были монохромными. [2] Поддержка 16 цветов была введена в Windows 3.0 . [ нужна ссылка ]
В Win32 появилась поддержка хранения изображений значков до 16,7 миллионов цветов (TrueColor) и размером до 256×256 пикселей. [3] В Windows 95 также представлен новый механизм независимого от устройства растрового изображения (DIB). [4] Однако глубина цвета значков по умолчанию в Windows 95 составляла 256 цветов. Можно было включить значки с 65535 цветами (Highcolor) , изменив значение Shell Icon BPP в реестре. [3] [5] или купив Microsoft Plus! для Windows 95. Значение «Размер значка оболочки» позволяет использовать значки большего размера вместо значков 32×32, а значение « Размер значка оболочки малого размера» позволяет использовать нестандартные размеры вместо значков 16×16. [3] Таким образом, в одном файле значков могут храниться изображения любого размера от 1×1 до 256×256 пикселей (включая неквадратные размеры) с 2 (редко используемыми), 16, 256, 65535 или 16,7 миллионами цветов; но оболочка не могла отображать значки очень большого размера. Область уведомлений на панели задач Windows по умолчанию была ограничена 16 цветными значками до тех пор, пока Windows Me не была обновлена для поддержки значков с ярким цветом.
В Windows XP добавлена поддержка изображений значков с 32-битным цветом (16,7 миллионов цветов плюс 8-битная прозрачность альфа-канала ), что позволяет полупрозрачные области, такие как тени , сглаживание отображать в значке и эффекты, подобные стеклу. Windows XP по умолчанию использует значки размером 48×48 пикселей в проводнике Windows . Windows XP можно заставить использовать значки размером до 256×256, изменив значение размера значка оболочки , но это приведет к увеличению масштаба всех значков размером 32×32 во всей оболочке. [3] Microsoft рекомендовала размеры значков только до 48×48 пикселей для Windows XP. [6] Windows XP может уменьшить масштаб значков большего размера, если более близкий размер изображения недоступен. [3]
В Windows Vista значков размером 256×256 пикселей добавлена полная поддержка 32-битных цветных . [Примечания 1] а также поддержка сжатого формата PNG . Хотя сжатие не требуется, Microsoft рекомендует хранить все 32-битные цветные значки размером 256×256 в файлах ICO в формате PNG, чтобы уменьшить общий размер файла. Проводник Windows Vista поддерживает плавное масштабирование значков до нестандартных размеров, которые отображаются «на лету», даже если в файле значков нет изображения такого размера. В оболочку Windows Vista добавлен ползунок для «увеличения» и уменьшения размеров значков. Пользователям, использующим более высокие разрешения и режимы с высоким разрешением, рекомендуется использовать более крупные форматы значков (например, 256×256). [7] [8]
MIME-тип
[ редактировать ]Хотя IANA зарегистрированный в тип MIME для файлов ICO image/vnd.microsoft.icon
, [9] он был отправлен в IANA в 2003 году третьей стороной и не распознается программным обеспечением Microsoft, которое использует image/x-icon
или image/ico
вместо. [10] [11] Ошибочные типы image/ico
, image/icon
, text/ico
и application/ico
также были замечены в использовании. [9]
Структура файла значков
[ редактировать ]Файл ICO или CUR состоит из структуры ICONDIR («каталог значков»), содержащей структуру ICONDIRENTRY для каждого изображения в файле, за которой следует непрерывный блок всех данных растрового изображения (которые могут быть в формате Windows BMP , за исключением структуры BITMAPFILEHEADER или в формате PNG , хранящегося целиком). [3]
Изображения с глубиной цвета менее 32 бит следуют определенному формату: изображение кодируется как одно изображение, состоящее из маски цвета («маска XOR») вместе с маской непрозрачности («маска И»). [6] [3] Маска XOR должна предшествовать маске AND внутри данных растрового изображения; если изображение хранится в порядке снизу вверх (что, скорее всего, так и есть), маска XOR будет нарисована под маской AND. Маска AND имеет размер 1 бит на пиксель, независимо от глубины цвета, указанной в заголовке BMP, и определяет, какие пиксели являются полностью прозрачными (1), а какие полностью непрозрачными (0). Маска XOR соответствует битовой глубине, указанной в заголовке BMP, и определяет числовое значение цвета или палитры для каждого пикселя. Вместе маска AND и маска XOR создают непрозрачное изображение, представляющее изображение с 1-битной прозрачностью; они также позволяют инвертировать фон. Высота изображения в структуре ICONDIRENTRY файла ICO/CUR принимает размеры предполагаемого изображения (после объединения масок), тогда как высота в заголовке BMP принимает высоту двух объединенных изображений масок (до того, как они будут объединены). являются составными). Таким образом, каждая маска должна иметь одинаковые размеры, а высота, указанная в заголовке BMP, должна быть ровно в два раза больше высоты, указанной в структуре ICONDIRENTRY. [12]
32-битные изображения (включая 32-битные изображения BMP в формате BITMAPINFOHEADER). [Примечания 2] ) представляют собой 24-битное изображение с добавлением 8-битного канала для альфа-композиции . Таким образом, в 32-битных изображениях маска AND не обязательна, но рекомендуется к рассмотрению. Windows XP и более поздние версии будут использовать 32-битное изображение в режиме цвета, меньшего, чем True , создавая маску AND на основе альфа-канала (если он еще не находится в изображении), если в нем не указана 24-битная версия изображения. файл ICO/CUR. Однако более ранние версии Windows интерпретируют все пиксели со 100% непрозрачностью, если с изображением не указана маска И. Предоставление пользовательской маски AND также позволит автору значка настраивать и подсказывать. Даже если маска AND не указана, если изображение имеет формат Windows BMP, заголовок BMP все равно должен указывать удвоенную высоту.
Важно отметить, что в маске AND, как и в случае с массивом пикселей растрового изображения , в конец каждой строки необходимо добавлять байты заполнения, чтобы увеличить ее длину до кратной четырем байтам, поскольку по сути это (монохромный) растровое изображение. [3] Маска AND растрового изображения размером 8x8 пикселей будет иметь 1 байт данных и 3 байта заполнения (8*8*1bpp = 64 бита/8 = 8 байт общего количества строк, поэтому каждая строка имеет размер 1 байта и требуется 3 байта заполнения). ), маска И растрового изображения 16x16 будет содержать 2 байта данных и 2 байта заполнения, маска И растрового изображения 32x32 будет содержать 4 байта данных и не иметь заполнения. Обратите внимание, что количество необходимых байтов заполнения зависит от размеров растрового изображения, а не от его глубины цвета, поскольку маска И независимо составляет 1 бит на пиксель.
Контур
[ редактировать ]Все значения в файлах ICO/CUR представлены в порядке байтов с прямым порядком байтов.
Заголовок
[ редактировать ]Компенсировать# | Размер | Цель |
---|---|---|
0 | 2 | Сдержанный. Всегда должно быть 0. |
2 | 2 | Указывает тип изображения: 1 для изображения значка (.ICO), 2 для изображения курсора (.CUR). Другие значения недействительны. |
4 | 2 | Указывает количество изображений в файле. |
Структура каталога изображений
[ редактировать ]Изображение №1 | Запись для первого изображения |
---|---|
Изображение №2 | Запись для второго изображения |
... | |
Изображение №n | Запись для последнего изображения |
Компенсировать# | Размер | Цель |
---|---|---|
0 | 1 | Определяет ширину изображения в пикселях. Может быть любым числом от 0 до 255. Значение 0 означает, что ширина изображения составляет 256 пикселей. [Примечания 1] |
1 | 1 | Определяет высоту изображения в пикселях. Может быть любым числом от 0 до 255. Значение 0 означает, что высота изображения составляет 256 пикселей. [Примечания 1] |
2 | 1 | Указывает количество цветов в цветовой палитре. Должно быть 0, если изображение не использует цветовую палитру. |
3 | 1 | Сдержанный. Должно быть 0. |
4 | 2 |
|
6 | 2 |
|
8 | 4 | Указывает размер данных изображения в байтах. |
12 | 4 | Указывает смещение данных BMP или PNG от начала файла ICO/CUR. |
Данные ссылочного изображения
[ редактировать ]Все данные изображения, на которые ссылаются записи в каталоге изображений, идут непосредственно после каталога изображений. Обычно их следует хранить в том же порядке, который определен в каталоге изображений.
формат BMP
Если изображение хранится в формате BMP, оно должно исключать открытие Структура BITMAPFILEHEADER .
Высота изображения BMP должна быть в два раза больше высоты, указанной в каталоге изображений. Это связано с тем, что фактические данные изображения будут содержать две части: непосредственно за самим изображением следует 1-битная маска того же размера, что и изображение, используемое для определения того, какие пиксели будут отрисованы.
Маска должна соответствовать DWORD (32 бита) и быть упакована нулями. Пиксель 0 означает, что соответствующий пиксель изображения будет нарисован, а 1 означает, что этот пиксель игнорировать. Цвет пикселя либо является явным для 24- и 32-битных версий (которые не имеют таблиц цветов), либо индексируется для других глубин (1,2,4,8,16) в таблице четырехбайтовых (BGRA) цветов, которая следует за БИТМАПИНОЗАГОЛОВОК.
Для 1 бита обычно используются два цвета #00000000 и #00FFFFFF, а канал A игнорируется.
Данные пикселей для 1,2,4,8 и 16 бит упаковываются по байтам и выравниваются по DWORD.
24-битные изображения хранятся как тройки BGR, но не выравниваются по DWORD.
32-битные изображения сохраняются как четверки BGRA.
Первоначально ICO и CUR предназначались для использования на монохромных дисплеях и использовали формулу Output = (Existing AND Mask) XOR Image
но на цветных экранах курсор формируется с использованием смешивания каналов, а маска используется для определения того, какие пиксели включены или исключены.
PNG формат
[ редактировать ]Если режим сжатия BI_PNG (5), то BITMAPINFOHEADER отсутствует и вместо него используется содержимое PNG-изображения полностью.
Возможность чтения изображений PNG из изображений формата ICO была представлена в Windows Vista . [7] Изображение PNG может быть сохранено в изображении так же, как это делается для изображения стандартного формата Windows BMP, за исключением того, что изображение PNG должно храниться целиком, с заголовком файла, и должно быть в формате ARGB 32bpp. [7]
Примечание. Файлы CUR не могут использовать данные изображения PNG и должны использовать данные изображения BMP согласно ICO. [7]
Ресурсы значков и курсоров
[ редактировать ]Значки и курсоры в файлах Portable Executable ( EXE или DLL ) организованы в ресурсы типа RT_GROUP_ICON , RT_GROUP_CURSOR , RT_ICON и RT_КУРСОР . [13]
RT_GROUP_ICON и Ресурсы RT_GROUP_CURSOR содержат Структура NEWHEADER и один или несколько RESDIR , имеющие почти тот же формат, что и соответствующие Структуры ИКОНДИР и Структуры ICONDIENTRY в файлах ICO/CUR. Основное отличие заключается в RESDIR , что последний член структуры содержит двухбайтовый идентификатор ресурса RT_ICON / RT_CURSOR вместо смещения изображения в файле.
НЬЮ-ЗАГОЛОВОК / Структуры RESDIR, также называемые ГРПИКОНДИР / GRPICONDIENTRY во многих источниках. [14]
Компенсировать# | Размер | Цель |
---|---|---|
0 | 2 | Сдержанный. Всегда должно быть 0. |
2 | 2 | Указывает тип ресурса: 1 для ресурса значка, 2 для ресурса курсора. Другие значения недействительны. |
4 | 2 | Указывает количество Структуры RESDIR , которые следуют непосредственно за Структура NEWHEADER . |
Компенсировать# | Размер | Цель |
---|---|---|
0 | Для значка: 1 | * Указывает ширину изображения в пикселях. Может быть любым числом от 0 до 255. Значение 0 означает, что ширина изображения составляет 256 пикселей. [Примечания 1] |
Для курсора: 2 | ||
2 | Для значка: 1 | * Указывает высоту изображения в пикселях. Может быть любым числом от 0 до 255. Значение 0 означает, что ширина изображения составляет 256 пикселей. [Примечания 1] |
Для курсора: 2 | ||
2 | 1 | * Для ресурса значка: определяет количество цветов в цветовой палитре. Должно быть 0, если изображение не использует цветовую палитру. |
3 | 1 | * Для ресурса значков: зарезервировано. Должно быть 0. |
4 | 2 | Определяет цветовые плоскости. Должно быть 0 или 1. [Примечания 3] |
6 | 2 | Указывает бит на пиксель. [Примечания 5] |
8 | 4 | Указывает размер ресурса в байтах. |
12 | 2 | Уникальный порядковый идентификатор RT_ICON или Ресурс RT_CURSOR . |
RT_ICON и Ресурсы RT_CURSOR имеют тот же формат данных изображения, что и файлы ICO, а также могут хранить изображения PNG. Кроме того, первые четыре байта RT_CURSOR Данные ресурса содержат данные активной точки курсора в виде двух 16-битных значений (в отличие от файлов CUR, в которых данные активной точки содержатся в Структура ICONDIENTRY ). [15]
Библиотека иконок
[ редактировать ]Библиотека значков — это способ упаковки значков Windows. Обычно это 16-разрядный новый исполняемый файл или 32-разрядный двоичный переносимый исполняемый файл с расширением .ICL, в котором ресурсы значков представляют собой упакованные значки. Windows Vista и более поздние версии не поддерживают просмотр значков из 16-битных ( новых исполняемых файлов ) файлов. [16]
См. также
[ редактировать ]- Формат изображения значка Apple
- Формат файла BMP
- Значок компьютера
- Фавикон
- Список программного обеспечения для значков
Примечания
[ редактировать ]- ^ Jump up to: а б с д и Поскольку в Windows 95 размер изображения в Структура ICONDIENTRY может быть установлена в ноль, что означает 256 пикселей. Начиная с Windows Vista, размер изображения определяется Структура BITMAPINFOHEADER или данные изображения PNG, которые технически позволяют хранить значки размером более 256 пикселей, но Microsoft не рекомендует такие большие размеры.
- ^ Классический растровый формат BITMAPINFOHEADER поддерживает хранение изображений с 32 битами на пиксель. При сохранении как отдельный файл .BMP «старший байт в каждом [пикселе] не используется». Однако, когда те же данные хранятся внутри файла ICO или CUR, Windows XP (первая версия Windows, поддерживающая файлы ICO/CUR с более чем 1 битом прозрачности) и выше интерпретируют этот байт как альфа-значение.
- ^ Jump up to: а б Установка цветовых плоскостей на 0 или 1 обрабатывается операционной системой одинаково, но если для цветовых плоскостей установлено значение выше 1, это значение следует умножить на количество битов на пиксель, чтобы определить окончательную глубину цвета изображения. Неизвестно, устойчивы ли различные версии операционной системы Windows к разным значениям цветовой плоскости.
- ^ Jump up to: а б «Поддержка значков и курсоров Windows XP» . Майкрософт. 18 ноября 2005 г. Архивировано из оригинала 30 июня 2011 г. Проверено 3 июля 2023 г.
Курсор загружается правильно при любой глубине цвета, при которой был создан курсор. Однако система не может отличить несколько кандидатов в одном и том же файле курсора или ресурсе, которые отличаются только глубиной цвета. Однако значки полностью поддерживают несколько вариантов значков с различной глубиной цвета.
- ^ Jump up to: а б Число битов на пиксель может быть установлено равным нулю, но его можно вывести из других данных; в частности, если растровое изображение не сжато в формате PNG, то количество битов на пиксель можно вычислить на основе длины данных растрового изображения относительно размера изображения. Если растровое изображение сжато в формате PNG, биты на пиксель сохраняются в данных PNG. Неизвестно, содержат ли различные версии операционной системы Windows логику для определения разрядности для всех возможностей, если это значение установлено на ноль.
Ссылки
[ редактировать ]- ^ «Стандарт анализа MIME» . ЧТОРГ. 17 января 2014 г. Архивировано из оригинала 27 марта 2014 г. Проверено 18 апреля 2014 г.
- ^ Фекете, Дьёрдь (11 марта 2009 г.). «Проектирование интерфейса операционной системы в период 1981-2009 гг.» . Депо веб-дизайнеров . Проверено 6 июня 2011 г.
- ^ Jump up to: а б с д и ж г час Хорник, Джон (29 сентября 1995 г.). «Иконы» . Технические статьи по пользовательскому интерфейсу Windows ( MSDN ) . Корпорация Майкрософт . Проверено 5 июня 2011 г.
- ^ «Компоненты архитектуры Windows 95» . Microsoft TechNet . Корпорация Майкрософт . Проверено 6 июня 2011 г.
- ^ «Значок оболочки БПП» . Справочник по реестру Windows 2000 (Microsoft TechNet) . Корпорация Майкрософт . Проверено 6 июня 2011 г.
- ^ Jump up to: а б «Создание значков Windows XP» . Технические статьи по Windows XP (MSDN) . Корпорация Майкрософт. Июль 2001 года . Проверено 27 ноября 2022 г.
- ^ Jump up to: а б с д Чен, Раймонд (22 октября 2010 г.). «Эволюция формата файлов ICO, часть 4: изображения PNG» . Старая новая вещь — Блоги разработчиков Microsoft . Проверено 27 ноября 2022 г.
- ^ «Значки (основы дизайна) — приложения Win32» . Learn.microsoft.com . 9 февраля 2021 г.
Максимальный размер значков составляет 256x256 пикселей, что делает их подходящими для дисплеев с высоким разрешением (точек на дюйм). Эти значки с высоким разрешением обеспечивают высокое визуальное качество в представлениях списков с большими значками... Следует включать только 32-битную копию изображения размером 256x256 пикселей, и только изображение 256x256 пикселей следует сжимать, чтобы уменьшить размер файла.
- ^ Jump up to: а б Мясник, Саймон (3 сентября 2003 г.). "изображение/vnd.microsoft.icon" . Проверено 3 января 2014 г.
- ^ Лоуренс, Эрик (11 февраля 2011 г.). «Список незначительных изменений IE9 RC» . IEInternals . Блоги MSDN . Проверено 20 августа 2016 г.
Смотрите второй комментарий.Мы используем «image/x-icon», потому что это тип MIME, который мы всегда использовали. Кто-то в какой-то момент (AFAIK, не связанный с Microsoft) предложил зарегистрировать тип MIME как «vnd.microsoft.icon», но Windows на самом деле это не использует, а использует image/x-icon.
- ^ Компонент обработки изображений Windows — Обзор формата ICO
- ^ Чен, Раймонд (19 октября 2010 г.). «Эволюция формата файлов ICO, часть 2: теперь в цвете!» . Старая новая вещь . Проверено 30 декабря 2022 г.
- ^ «Форматы файлов ресурсов — приложения Win32» . Learn.microsoft.com . 19 августа 2020 г. Проверено 22 мая 2023 г.
- ^ Чен, Раймонд (20 июля 2012 г.). «Формат ресурсов значков» . Старая новая вещь — Блоги разработчиков Microsoft . Проверено 20 мая 2023 г.
- ^ «Структура LOCALHEADER — приложения Win32» . Learn.microsoft.com . 11 декабря 2020 г. Проверено 22 мая 2023 г.
- ^ Чен, Раймонд (май 2008 г.). «Конфиденциальная информация о Windows: 16-битные значки уже устарели» . Журнал ТехНет . Проверено 27 ноября 2022 г.
Внешние ссылки
[ редактировать ]- Рекомендации по дизайну значков для Windows Vista
- Рекомендации по дизайну значков приложений для Windows 10
- Значки (техническая статья Microsoft 1995 г.)
- Эволюция формата файла ICO ( Часть 1 , Часть 2 , Часть 3 , Часть 4 )
- Взгляд внутрь значков Windows, часть 1 - PC Mag, 26 января 1993 г., том 12, № 2
- Взгляд внутрь значков Windows, часть 2 — PC Mag, 9 февраля 1993 г., том 12, № 3
- Включить значки высокого цвета в Windows 95 и более поздних версиях
- Улучшите графический интерфейс Java с помощью значков Windows