Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Interleaved Bitmap ( ILBM ) - это формат файла изображения, соответствующий стандарту Interchange File Format (IFF). Формат возник на платформе Amiga , а в IBM-совместимых системах файлы в этом формате или связанном формате PBM (Planar Bitmap) обычно встречаются в играх конца 1980-х - начала 1990-х годов, которые были либо портами Amiga, либо имели свои графические ресурсы. на машинах Amiga. [ необходима цитата ]

Характерной особенностью формата является то, что он хранит растровые изображения в виде чередующихся битовых плоскостей , что и дает формату его имя; это отражает способ, которым графическое оборудование Amiga изначально считывает графические данные из памяти. Поддерживается простая форма сжатия, чтобы файлы ILBM были более компактными. [4]

На Amiga эти файлы не связаны с конкретным расширением файла , хотя, когда они начали использоваться в системах ПК, где расширения используются систематически, они использовали расширение .lbm или иногда .bbm . [ необходима цитата ]

Формат файла [ править ]

ILBM - это реализация формата файла IFF , состоящего из ряда последовательных фрагментов, порядок которых может до некоторой степени варьироваться. У каждого блока своя функция и один и тот же базовый формат. Это означает, что программе не нужно читать или декодировать каждый фрагмент файла, а только те, с которыми она хочет иметь дело, или те, которые она может понять. [4]

Файлы ILBM обычно содержат достаточно информации, чтобы их можно было отображать программой редактирования изображений, включая размеры изображения, палитру и данные о пикселях. Некоторые файлы были разработаны для использования в качестве палитр для программ рисования (пиксельные данные оставлены пустыми) или для объединения в другое изображение. Это делает их намного более гибкими, но и более сложными, чем другие форматы, такие как BMP. [ необходима цитата ]

Для ILBM блок BMHD и любые другие «жизненно важные» блоки должны располагаться перед блоком BODY . Любые фрагменты, появляющиеся после BODY , считаются «лишними», и многие программы оставляют их непрочитанными и неизменными. [4]

BMHD: Bitmap Header [ править ]

Блок BMHD определяет способ отображения изображения и обычно является первым блоком внутри FORM . Он не только определяет высоту / ширину изображения, но и то, где оно отображается на экране, как отображать его при различных разрешениях экрана и если изображение сжато. Содержимое этого чанка следующее: [4]

BODY: данные изображения [ редактировать ]

Блок BODY обычно является последним блоком в файле [4] и самым большим [ необходима ссылка ] .

В файлах ILBM блок BODY хранит фактические данные изображения в виде чередующихся битовых плоскостей (и необязательной маски) по строкам. Битовые плоскости появляются сначала от 1 до n, за ними следует плоскость маски. Если изображение не сжато, то каждая строка будет состоять из (width + 15) / 1616-битных значений (т.е. один бит на пиксель, округленный до ближайшего кратного 16-битного). Если изображение сжато, то каждая строка сжимается индивидуально и всегда кратная 16-битной длине при сжатии. [4]

В файлах PBM фрагмент BODY проще, поскольку в несжатом виде он представляет собой просто непрерывный поток байтов, содержащий данные изображения. [ необходима цитата ]

Сжатие [ править ]

Если изображение сжато, каждая строка данных (но не каждая битовая плоскость) сжимается отдельно, включая данные маски, если они есть. Сжатие - это разновидность сжатия RLE с использованием флагов. Его можно расшифровать следующим образом: [4]

  • Цикл до тех пор, пока мы не получим [Конечная длина] байтов данных (окончательная длина рассчитывается исходя из размера изображения)
  • Пока [Длина распакованных данных] <[Окончательная длина]:
    1. Прочитать байт [значение]
    2. Если [Value]> 128, то:
      • Прочтите следующий байт и выведите его (257 - [Значение]) раз.
      • Переместитесь на 2 байта вперед и вернитесь к шагу 1.
    3. Иначе, если [Значение] <128, то:
      • Прочитать и вывести следующие [значение + 1] байт
      • Переместите вперед [Value + 2] байта и вернитесь к шагу 1.
    4. Else [Value] = 128, выйти из цикла (прекратить распаковку)

Для подпрограммы сжатия лучше всего закодировать двухбайтовый повторный прогон как дублирующий прогон, за исключением случаев, когда ему предшествует литеральный прогон и за ним следует буквальный прогон, и в этом случае лучше всего объединить три в один буквальный прогон. Всегда кодируйте повторы, превышающие 3 байта, при выполнении репликации. [4]

CAMG: режим Amiga [ править ]

Блок CAMG предназначен специально для компьютера Commodore Amiga. Он хранит ДЛИННЫЙ "режим просмотра". Это позволяет вам указать такие режимы отображения Amiga, как «двойное игровое поле» и «удерживать и изменять». Неудивительно, что это редкость за пределами игр Amiga. [ необходима цитата ]

Если вам нужно преобразовать или отобразить файлы, которые могут содержать значимые фрагменты CAMG, см. «Примечания по работе с файлами ILBM» ниже.

CMAP: палитра [ править ]

Блок CMAP содержит палитру изображения и состоит из 3-байтовых значений RGB для каждого используемого цвета. Каждый байт находится в диапазоне от 0 до 255 включительно. Чанк имеет 3 × numColoursдлину в байтах. Количество цветов в палитре будет 2 ^ numBitplanes. Этот фрагмент является необязательным, и если его нет, будет использоваться палитра по умолчанию. Возможно иметь меньше записей, чем ожидалось (например, 7 цветов для 4-уровневого растрового изображения «16 цветов»). Помните, что если у него нечетное количество цветов, согласно спецификации IFF, фрагмент будет дополнен одним byte, чтобы сделать его длиной четное число байтов, но байт заполнения не включается в поле длины блока. [4]

CRNG: Цветовой диапазон [ править ]

Фрагмент цветовой гаммы является «нестандартным». Он используется программой Deluxe Paint от Electronic Arts для определения непрерывного диапазона регистров цвета или «диапазона оттенков» и смены цветов. В файле ILBM может быть ноль или более фрагментов CRNG , но все они должны располагаться перед фрагментом BODY . Deluxe Paint обычно записывает 4 блока CRNG в ILBM, когда пользователь просит его «Сохранить изображение». [4]

CCRT: Цикл цвета [ править ]

Программа Commodore Graphicraft использует CCRT для диапазона и времени смены цвета . Этот блок содержит структуру CycleInfo. Как и CRNG, это нестандартный кусок. [4]

Данные похожи на блок CRNG . Программа, вероятно, будет использовать только один из этих двух методов выражения данных цветового цикла. Вы можете записать оба, если хотите передать эту информацию и DeluxePaint, и Graphicraft. [4]

DEST: объединение битовых плоскостей [ править ]

Необязательное свойство DEST - это способ контролировать, как разбросать ноль или более исходных битовых плоскостей в более глубокое целевое изображение. Некоторые читатели могут игнорировать DEST. [4]

Число битов с глубиной низкого порядка в параметрах planePick, planeOnOff и planeMask взаимно однозначно соответствует битовым плоскостям назначения. Бит 0 с битовой плоскостью 0 и т. Д. Любые биты более высокого порядка следует игнорировать. [4]

Биты «1» в planePick означают «поместить следующую исходную битовую плоскость в эту битовую плоскость», поэтому количество битов «1» должно равняться numPlanes. «0» бит означает «поместить соответствующий бит из planeOnOff в эту битовую плоскость». [4]

Биты в planeMask запись шлюза в битовую плоскость назначения: биты «1» означают «запись в эту битовую плоскость», а биты «0» означают «оставить эту битовую плоскость в покое». Обычный случай (без блока DEST ) эквивалентен planePick = planeMask = (2 ^ numPlanes) - 1. [4]

Помните, что номера цветов формируются пикселями в целевом растровом изображении (глубина плоскостей), а не в исходном растровом изображении (глубокие плоскости numPlanes). [4]

GRAB: Hotspot [ править ]

Необязательный блок GRAB определяет местонахождение «дескриптора» или «горячей точки» изображения относительно его верхнего левого угла, например, при использовании в качестве курсора мыши или «кисти для рисования». Это необязательно. [4]

SPRT: Z-порядок [ править ]

Блок SPRT указывает, что изображение предназначено для спрайта. Таким образом, он должен иметь плоскость маски или прозрачный цвет и не должен быть полноэкранным. Как это делается, зависит от программы, использующей изображение. Единственные данные, хранящиеся здесь, - это порядок спрайтов, используемый многими программами для размещения спрайта на переднем плане (спрайт порядка 1 появляется за спрайтом порядка 0 и т. Д.). Это необязательно. [4]

TINY: значок [ править ]

Блок TINY содержит небольшое изображение для предварительного просмотра для различных графических программ, включая Deluxe Paint. Он сжат и похож по формату на блок BODY . [ необходима цитата ]

Примечания по работе с ILBM [ править ]

Цветовые карты [ править ]

Иногда файл ILBM содержит только цветовую карту и не содержит данных изображения. Часто используется для хранения палитры цветов, которую можно применить к изображению отдельно. В этом случае блок BODY должен быть пустым, а поле numPlanes в блоке BMHD будет иметь значение 0. [4]

Глубокие изображения [ править ]

Некоторые файлы ILBM содержат информацию «истинного цвета», а не индексированные цвета. Эти файлы так называемых «глубоких изображений» не имеют блока CMAP и обычно имеют 24 или 32 битовых плоскости. Стандартный порядок битовых плоскостей ставит младший бит красного компонента первым: [4]

R0 R1 R2 R3 R4 R5 R6 R7 G0 G1 G2 G3 G4 G5 G6 G7 B0 B1 B2 B3 B4 B5 B6 B7

Если есть 32-битные плоскости, последние 8-битные плоскости будут альфа-каналом:

R0 R1 ... R7 G0 ... G7 B0 ... B6 B7 A0 A1 A2 A3 A4 A5 A6 A7

Изображение, не содержащее карты цветов и только 8 битовых плоскостей, может быть изображением в градациях серого:

I0 I1 I2 I3 I4 I5 I6 I7

Extra Half-Brite [ править ]

Если файл ILBM содержит блок CAMG, в котором установлен бит 7 (т. Е. 0x80 в шестнадцатеричном формате). Предполагается, что файл будет использовать режим EHB (Extra Half-Brite) чипсета Amiga. Цветовая карта будет содержать не более 32 записей, но изображение будет иметь 6 битовых плоскостей. Старшую битовую плоскость следует рассматривать как флаг, если она не установлена, используйте младшие 5 бит в качестве индекса в карте цвета, как обычно. Когда установлен флаг; Используйте младшие 5 бит в качестве индекса в карте цветов, но фактический цвет, который будет использоваться, должен быть вдвое слабее, что может быть достигнуто путем смещения компонентов RGB цвета на один бит вправо. В качестве альтернативы создайте цветовую карту с 64 записями и скопируйте нижние 32 записи в верхнюю половину, преобразовав их в половинную яркость; затем используйте все 6 битовых плоскостей в качестве цветового индекса. [4]

Образы PBM не могут существовать в дополнительном полубрайт-режиме. [ необходима цитата ]

Удерживать и изменять [ править ]

Если файл ILBM содержит блок CAMG, в котором установлен бит 11 (т.е. 0x800 в шестнадцатеричном формате), файл предполагает использовать режим HAM (Hold-And-Modify) набора микросхем Amiga. В формате HAM6 цветовая карта будет иметь до 16 записей, но изображение будет иметь 6 (или, возможно, 5 битовых плоскостей). В формате HAM8 цветовая карта будет иметь до 64 записей, но изображение будет иметь 8 (или, возможно, 7 битовых плоскостей). [4]

Последние две битовые плоскости (если нечетное количество битовых плоскостей предполагает дополнительную битовую плоскость, которая всегда равна 0) являются управляющими флагами, которые указывают, как использовать первые 4 (или 6) битовых плоскостей. [4]

Если первый пиксель строки развертки является пикселем модификации, измените и используйте цвет границы изображения. [4]

Обратите внимание, что при использовании 4 битов для изменения цветового компонента вы должны использовать 4 бита в верхних 4 битах компонента И в нижних 4 битах (чтобы избежать уменьшения общей цветовой гаммы). При использовании 6 битов это менее важно, но вы все равно можете поместить 2 старших бита битов модификации в два младших бита цветового компонента. [4]

Образы PBM не могут существовать в режиме удержания и изменения. [ необходима цитата ]

Утилиты [ править ]

Большинство утилит, работающих с файлами ILBM и BBM, довольно устаревшие , например MacPaint или Deluxe Paint. IrfanView позволяет просматривать файлы, бесплатен для некоммерческого использования и может работать под Linux. [ необходима цитата ] Netpbm может конвертировать изображения из ILBM в собственный формат PPM [5] и обратно. [6] Графический редактор GrafX2, созданный в стиле Deluxe Paint, может загружать и сохранять файлы ILBM. ImageMagick и GraphicsMagick также могут отображать и преобразовывать изображения ILBM.

Заметки [ править ]

В серии игр Commander Keen Dreams сжатые автономные изображения ILBM используются для титульных экранов, но игра не считывает большинство фрагментов ILBM. Это связано с тем, что изображения были отредактированы в DeluxePaint, а затем импортированы непосредственно в файлы игры. [ необходима цитата ]

См. Также [ править ]

  • Amiga
  • Формат файла обмена
  • IrfanView

Ссылки [ править ]

  1. ^ Джерри Моррисон (1985-01-14). «EA IFF 85: Стандарт для файлов формата обмена» . Electronic Arts . Проверено 6 марта 2014 .
  2. ^ Джерри Моррисон (1986-01-17). " " ILBM "IFF Interleaved Bitmap" . Electronic Arts . Архивировано из оригинала на 2014-06-13 . Проверено 6 марта 2014 .
  3. ^ Джеймс Д. Мюррей, Уильям ванРайпер (апрель 1996 г.). «Энциклопедия форматов графических файлов, второе издание» . О'Рейли . ISBN 1-56592-161-5. Проверено 27 февраля 2014 .CS1 maint: использует параметр авторов ( ссылка )
  4. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z Hyperion Entertainment и участники (8 июня 2012 г.). «Растровое изображение с чередованием ILBM IFF» . Проверено 30 июля 2018 .CS1 maint: использует параметр авторов ( ссылка )
  5. ^ Джеф Посканзер, Инго Wilken (12 ноября 2014). "ilbmtoppm" . Проверено 13 июня 2019 .CS1 maint: использует параметр авторов ( ссылка )
  6. ^ Джеф Посканзер, Инго Wilken (28 июня 2015). "ppmtoilbm" . Проверено 13 июня 2019 .CS1 maint: использует параметр авторов ( ссылка )

Внешние ссылки [ править ]

  • PNG2ILBM Преобразует файлы PNG в формат ILBM. Теоретически он может конвертировать любой PNG, включая альфа-канал и / или 16-битную глубину на канал. Он поддерживает передискретизацию, квантование, дизеринг, сохранение или переопределение регистров цвета на любых битовых плоскостях от 1 до 8, включая Extra-HalfBrite.
  • Graphics Workshop 1.1Y середины 90-х может конвертировать из и во все варианты файлов ILBM; он поддерживает множество других форматов файлов изображений. Он устарел, но все еще работает даже в Windows 10 при работе в режиме совместимости с Windows XP. Существует также более новая коммерческая версия, известная как Graphics Workshop Professional, с гораздо более современным пользовательским интерфейсом (кажется, что это середина нулевых), которая, однако, также устарела по сегодняшним стандартам.
  • Ultimate Paint может читать, писать и отображать анимацию цветового цикла палитры.
  • Nconvert от XnView - это бесплатный и современный конвертер командной строки.
  • Image Converter Plus - это программа, которая конвертирует файлы ILBM в любое количество форматов. Хотя полная версия не является бесплатной, демонстрационная версия добавляет водяной знак, который можно удалить.
  • Paint Shop Pro 7.04 и другие старые версии PSP могут читать и писать ILBM, но могут только читать файлы PBM. Особо упоминается PSP7, так как в условно-бесплатной версии есть ошибка, которая позволяет пропустить механизм завершения оценки, просто открыв файл (т. Е. Измените ярлык, чтобы всегда открывать файл, и вас не побеспокоят).