stringtranslate.com

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 добавлена ​​полная поддержка 32-битных цветных значков размером 256×256 пикселей [Примечания 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/icoand 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] И-маска растрового изображения размером 8x8 пикселей будет иметь 1 байт данных и 3 байта заполнения (8*8*1bpp = 64 бита/8 = 8 байт общего количества строк, поэтому каждая строка состоит из 1 байта и 3 байтов заполнения). необходимы дополнения), маска И растрового изображения 16x16 будет содержать 2 байта данных и 2 байта заполнения, маска И растрового изображения 32x32 будет иметь 4 байта данных и не иметь заполнения. Обратите внимание, что количество необходимых байтов заполнения зависит от размеров растрового изображения, а не от его глубины цвета, поскольку маска И независимо составляет 1 бит на пиксель.

Контур

Все значения в файлах ICO/CUR представлены в порядке байтов с прямым порядком байтов.

Заголовок

Структура каталога изображений

Данные ссылочного изображения

Все данные изображения, на которые ссылаются записи в каталоге изображений, идут непосредственно после каталога изображений. Обычно их следует хранить в том же порядке, который определен в каталоге изображений.

Напомним, что если изображение хранится в формате BMP, оно должно исключать открывающую структуру BITMAPFILEHEADER , тогда как если оно хранится в формате PNG, оно должно храниться целиком.

Обратите внимание, что высота изображения BMP должна быть в два раза больше высоты, объявленной в каталоге изображений. Вторая половина растрового изображения должна представлять собой маску И для существующих пикселей экрана, а выходные пиксели задаются формулой Output = (Existing AND Mask) XOR Image. Установите маску везде равной нулю для чистой перезаписи.

PNG формат

Возможность чтения изображений PNG из изображений формата ICO и CUR была представлена ​​в Windows Vista . [7] Изображение PNG может быть сохранено в изображении так же, как это делается для изображения стандартного формата Windows BMP, за исключением того, что изображение PNG должно храниться целиком, с заголовком файла, и должно быть в формате ARGB с разрешением 32 бита на пиксель. формат. [7]

Ресурсы значков и курсоров

Значки и курсоры в файлах Portable Executable ( EXE или DLL ) организованы в ресурсы типа RT_GROUP_ICON , RT_GROUP_CURSOR , RT_ICON и RT_CURSOR . [13]

Ресурсы RT_GROUP_ICON и RT_GROUP_CURSOR содержат структуру NEWHEADER и одну или несколько структур RESDIR , которые имеют почти тот же формат, что и соответствующие структуры ICONDIR и ICONDIRENTRY в файлах ICO/CUR. Основное отличие RESDIR заключается в том, что последний член структуры содержит двухбайтовый идентификатор ресурса RT_ICON / RT_CURSOR вместо смещения изображения в файле.

Структуры NEWHEADER / RESDIR во многих источниках также обозначаются как GRPICONDIR / GRPICONDIRENTRY . [14]


Ресурсы RT_ICON и RT_CURSOR имеют тот же формат данных изображения, что и файлы ICO, и также могут хранить изображения PNG. Кроме того, первые четыре байта данных ресурса RT_CURSOR содержат данные активной точки курсора в виде двух 16-битных значений (в отличие от файлов CUR, в которых данные активной точки содержатся в структуре ICONDIRENTRY ). [15]

Библиотека иконок

Библиотека значков — это способ упаковки значков Windows. Обычно это 16-разрядный новый исполняемый файл или 32-разрядный двоичный переносимый исполняемый файл с расширением .ICL, в котором ресурсы значков представляют собой упакованные значки. Windows Vista и более поздние версии не поддерживают просмотр значков из 16-битных ( новых исполняемых файлов) файлов. [16]

Смотрите также

Примечания

  1. ^ abcde Начиная с Windows 95 размер изображения в структуре ICONDIRENTRY может быть установлен равным нулю, что означает 256 пикселей. Начиная с Windows Vista, размер изображения определяется на основе структуры BITMAPINFOHEADER или данных изображения PNG, что технически позволяет хранить значки размером более 256 пикселей, но Microsoft не рекомендует такие большие размеры.
  2. ^ Классический растровый формат BITMAPINFOHEADER поддерживает хранение изображений с 32 битами на пиксель. При сохранении как отдельный файл .BMP «старший байт в каждом [пикселе] не используется». Однако, когда те же данные хранятся в файле ICO или CUR, Windows XP (первая версия Windows, поддерживающая файлы ICO/CUR с прозрачностью более 1 бита) и выше интерпретируют этот байт как альфа-значение.
  3. ^ ab Установка цветовых плоскостей на 0 или 1 обрабатывается операционной системой одинаково, но если для цветовых плоскостей установлено значение выше 1, это значение следует умножить на количество битов на пиксель, чтобы определить окончательную глубину цвета изображения. Неизвестно, устойчивы ли различные версии операционной системы Windows к разным значениям цветовой плоскости.
  4. ^ ab «Поддержка значков и курсоров Windows XP». Майкрософт. 18 ноября 2005 г. Архивировано из оригинала 30 июня 2011 г. Проверено 3 июля 2023 г. Курсор загружается правильно с любой глубиной цвета, при которой был создан курсор. Однако система не может различить несколько кандидатов в одном и том же файле курсора или ресурсе, которые отличаются только глубиной цвета. Однако значки полностью поддерживают несколько вариантов значков с различной глубиной цвета.
  5. ^ ab Биты на пиксель могут быть установлены в ноль, но их можно вывести из других данных; в частности, если растровое изображение не сжато PNG, то количество битов на пиксель можно вычислить на основе длины данных растрового изображения относительно размера изображения. Если растровое изображение сжато в формате PNG, биты на пиксель сохраняются в данных PNG. Неизвестно, содержат ли различные версии операционной системы Windows логику для определения разрядности для всех возможностей, если это значение установлено на ноль.

Рекомендации

  1. ^ "Стандарт анализа MIME" . ЧТОРГ. 17 января 2014 г. Архивировано из оригинала 27 марта 2014 г. Проверено 18 апреля 2014 г.
  2. Фекете, Дьёрдь (11 марта 2009 г.). «Проектирование интерфейса операционной системы в период 1981–2009 гг.». Депо веб-дизайнеров . Проверено 6 июня 2011 г.
  3. ^ abcdefgh Хорник, Джон (29 сентября 1995 г.). «Иконы». Технические статьи по пользовательскому интерфейсу Windows ( MSDN ) . Корпорация Майкрософт . Проверено 5 июня 2011 г.
  4. ^ «Компоненты архитектуры Windows 95» . Microsoft TechNet . Корпорация Майкрософт . Проверено 6 июня 2011 г.
  5. ^ "Значок оболочки BPP" . Справочник по реестру Windows 2000 (Microsoft TechNet) . Корпорация Майкрософт . Проверено 6 июня 2011 г.
  6. ^ ab «Создание значков Windows XP». Технические статьи по Windows XP (MSDN) . Корпорация Майкрософт. Июль 2001 года . Проверено 27 ноября 2022 г.
  7. ↑ abc Чен, Раймонд (22 октября 2010 г.). «Эволюция формата файлов ICO, часть 4: изображения PNG». Старая новая вещь — Блоги разработчиков Microsoft . Проверено 27 ноября 2022 г.
  8. ^ «Значки (основы дизайна) — приложения Win32» . Learn.microsoft.com . 9 февраля 2021 г. Максимальный размер значков составляет 256x256 пикселей, что делает их подходящими для дисплеев с высоким разрешением (точек на дюйм). Эти значки с высоким разрешением обеспечивают высокое визуальное качество в представлениях списков с большими значками... Следует включать только 32-битную копию изображения размером 256x256 пикселей, и только изображение 256x256 пикселей следует сжимать, чтобы уменьшить размер файла.
  9. ^ Аб Батчер, Саймон (3 сентября 2003 г.). "изображение/vnd.microsoft.icon" . Проверено 3 января 2014 г.
  10. Лоуренс, Эрик (11 февраля 2011 г.). «Список незначительных изменений IE9 RC». IEInternals . Блоги MSDN . Проверено 20 августа 2016 г. Мы используем «image/x-icon», потому что это тип MIME, который мы всегда использовали. Кто-то в какой-то момент (AFAIK, не связанный с Microsoft) предложил зарегистрировать тип MIME как «vnd.microsoft.icon», но Windows на самом деле это не использует, а использует image/x-icon.Смотрите второй комментарий.
  11. ^ Компонент обработки изображений Windows — Обзор формата ICO
  12. ^ Чен, Раймонд (19 октября 2010 г.). «Эволюция формата файлов ICO, часть 2: теперь в цвете!». Старая новая вещь . Проверено 30 декабря 2022 г.
  13. ^ «Форматы файлов ресурсов — приложения Win32» . Learn.microsoft.com . 19 августа 2020 г. Проверено 22 мая 2023 г.
  14. Чен, Раймонд (20 июля 2012 г.). «Формат ресурсов значков». Старая новая вещь — Блоги разработчиков Microsoft . Проверено 20 мая 2023 г.
  15. ^ «Структура LOCALHEADER — приложения Win32» . Learn.microsoft.com . 11 декабря 2020 г. Проверено 22 мая 2023 г.
  16. ^ Чен, Раймонд (май 2008 г.). «Конфиденциальная информация о Windows: 16-битные значки уже устарели». Журнал ТехНет . Проверено 27 ноября 2022 г.

Внешние ссылки