Jump to content

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

ICO
Расширение имени файла
.ico
Тип интернет-СМИ image/x-icon[ 1 ] (но см. ниже )
Единый идентификатор типа (UTI) com.microsoft.ico
Разработано Майкрософт
Тип формата Формат графического файла для компьютерных значков
Контейнер для BMP и PNG
Распространено на CUR
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 ]

Хотя 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 Запись для последнего изображения
Ввод изображения
ICONDIENTRY структура
Компенсировать# Размер Цель
0 1 Определяет ширину изображения в пикселях. Может быть любым числом от 0 до 255. Значение 0 означает, что ширина изображения составляет 256 пикселей. [ Примечания 1 ]
1 1 Определяет высоту изображения в пикселях. Может быть любым числом от 0 до 255. Значение 0 означает, что высота изображения составляет 256 пикселей. [ Примечания 1 ]
2 1 Указывает количество цветов в цветовой палитре. Должно быть 0, если изображение не использует цветовую палитру.
3 1 Сдержанный. Должно быть 0.
4 2
  • В формате ICO: определяет цветовые плоскости. Должно быть 0 или 1. [ Примечания 3 ]
  • В формате CUR: указывает горизонтальные координаты активной точки в пикселях слева. [ Примечания 4 ]
6 2
  • В формате ICO: указывает количество бит на пиксель. [ Примечания 5 ]
  • В формате CUR: указывает вертикальные координаты активной точки в пикселях сверху. [ Примечания 4 ]
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 ]

НОВАЯ структура HEADER
Компенсировать# Размер Цель
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 ]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Перейти обратно: а б с д и Поскольку в Windows 95 размер изображения в Структура ICONDIENTRY может быть установлена ​​в ноль, что означает 256 пикселей. Начиная с Windows Vista, размер изображения определяется Структура BITMAPINFOHEADER или данные изображения PNG, которые технически позволяют хранить значки размером более 256 пикселей, но Microsoft не рекомендует такие большие размеры.
  2. ^ Классический растровый формат BITMAPINFOHEADER поддерживает хранение изображений с 32 битами на пиксель. При сохранении как отдельный файл .BMP «старший байт в каждом [пикселе] не используется». Однако, когда те же данные хранятся внутри файла ICO или CUR, Windows XP (первая версия Windows, поддерживающая файлы ICO/CUR с более чем 1 битом прозрачности) и выше интерпретируют этот байт как альфа-значение.
  3. ^ Перейти обратно: а б Установка цветовых плоскостей на 0 или 1 обрабатывается операционной системой одинаково, но если для цветовых плоскостей установлено значение выше 1, это значение следует умножить на количество битов на пиксель, чтобы определить окончательную глубину цвета изображения. Неизвестно, устойчивы ли различные версии операционной системы Windows к разным значениям цветовой плоскости.
  4. ^ Перейти обратно: а б «Поддержка значков и курсоров Windows XP» . Майкрософт. 18 ноября 2005 г. Архивировано из оригинала 30 июня 2011 г. Проверено 3 июля 2023 г. Курсор загружается правильно с любой глубиной цвета, при которой был создан курсор. Однако система не может различить несколько кандидатов в одном и том же файле курсора или ресурсе, которые отличаются только глубиной цвета. Однако значки полностью поддерживают несколько вариантов значков с различной глубиной цвета.
  5. ^ Перейти обратно: а б Биты на пиксель могут быть установлены в ноль, но их можно вывести из других данных; в частности, если растровое изображение не сжато в формате PNG, то количество битов на пиксель можно вычислить на основе длины данных растрового изображения относительно размера изображения. Если растровое изображение сжато в формате PNG, биты на пиксель сохраняются в данных PNG. Неизвестно, содержат ли различные версии операционной системы Windows логику для определения разрядности для всех возможностей, если это значение установлено на ноль.
  1. ^ «Стандарт анализа MIME» . ЧТОРГ. 17 января 2014 г. Архивировано из оригинала 27 марта 2014 г. Проверено 18 апреля 2014 г.
  2. ^ Фекете, Дьёрдь (11 марта 2009 г.). «Проектирование интерфейса операционной системы в период 1981-2009 гг.» . Депо веб-дизайнеров . Проверено 6 июня 2011 г.
  3. ^ Перейти обратно: а б с д и ж г час Хорник, Джон (29 сентября 1995 г.). «Иконы» . Технические статьи по пользовательскому интерфейсу Windows ( MSDN ) . Корпорация Майкрософт . Проверено 5 июня 2011 г.
  4. ^ «Компоненты архитектуры Windows 95» . Microsoft TechNet . Корпорация Майкрософт . Проверено 6 июня 2011 г.
  5. ^ «Значок оболочки БПП» . Справочник по реестру Windows 2000 (Microsoft TechNet) . Корпорация Майкрософт . Проверено 6 июня 2011 г.
  6. ^ Перейти обратно: а б «Создание значков Windows XP» . Технические статьи по Windows XP (MSDN) . Корпорация Майкрософт. Июль 2001 года . Проверено 27 ноября 2022 г.
  7. ^ Перейти обратно: а б с д Чен, Раймонд (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 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 970824a6bb8e1e882baee47fadc9a064__1719261060
URL1:https://arc.ask3.ru/arc/aa/97/64/970824a6bb8e1e882baee47fadc9a064.html
Заголовок, (Title) документа по адресу, URL1:
ICO (file format) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)