ILBM

редактировать
"ILBM" IFF Interleaved Bitmap
Исторический логотип Electronic Arts 80s.svg
Расширение имени файла .iff, .lbm
РазработаноElectronic Arts
Первый выпуск14 января 1985 г.. (35 лет назад) (1985-01-14)
Тип форматаФорматы файлов изображений
Содержится вФормат файла обмена
Стандарт EA IFF 85: Стандарт для формата обмена
Открытый формат ?Исходный код общедоступного домена

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

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

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

Содержание
  • 1 Формат файла
    • 1.1 BMHD: Bitmap Header
    • 1.2 BODY: Данные изображения
      • 1.2.1 Сжатие
    • 1.3 CAMG: режим Amiga
    • 1.4 CMAP: Палитра
    • 1.5 CRNG: Цветовой диапазон
    • 1.6 CCRT: Циклическое изменение цвета
    • 1.7 DEST: Объединение битовых плоскостей
    • 1.8 GRAB: Hotspot
    • 1.9 SPRT: Z-порядок
    • 1.10 TINY: Thumbnail
  • 2 Примечания по работе с ILBM
    • 2.1 Color Maps
    • 2.2 Deep Images
    • 2.3 Extra Half-Brite
    • 2.4 Удержание и изменение
  • 3 Утилиты
  • 4 Примечания
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
Формат файла

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

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

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

ТипИмяОписание
FOURCCchunkID"FORM"
lenChunkДлина данных блока в байтах. Не включает байт заполнения. Будет таким же, как размер файла за вычетом восьми байтов (это поле и chunkIDне включаются в счетчик)
FOURCCformatID"ILBM" или "PBM"
BYTE [lenChunk - 12]contentФактические данные блока, состоящие из других субфрагментов ниже
BYTEpadНеобязательный байт заполнения, присутствует только в том случае, если lenChunkне кратно 2.

BMHD: Bitmap Header

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

ТипНазваниеОписание
widthШирина изображения в пикселях
heightВысота изображения в пикселях
xOriginГде на экране в пикселях находится верхний левый угол изображения. Значение обычно 0,0, если изображение не является частью большего изображения или не полноэкранным.
yOrigin
numPlanesКоличество плоскостей в битовой карте; 1 для монохромного, 4 для 16 цветов, 8 для 256 цветов или 0, если есть только палитра и нет данных изображения. (т.е. этот файл представляет собой всего лишь карту цветов.)
mask1 = замаскированный, 2 = прозрачный цвет, 3 = лассо (для MacPaint). Данные маски не считаются битовой плоскостью.
сжатиеЕсли 0, то без сжатия. Если 1, то данные изображения сжаты RLE. Если 2 "Вертикальное РЛЭ" от Deluxe Paint для Atari ST. Теоретически возможны другие значения, представляющие другие методы сжатия.
pad1Игнорировать при чтении, установить 0 при записи для будущей совместимости
transClrПрозрачный цвет, полезен только когда маска>= 2
xAspectПиксельный формат, соотношение ширина: высота; используется для отображения изображения на различных разрешениях экрана для 320x200 5: 6 или 10:11
yAspect
pageWidthРазмер экрана, на котором будет отображаться изображение, в пикселях, обычно 320 × 200
pageHeight

BODY: данные изображения

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

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

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

Сжатие

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

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

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

CAMG: Режим Amiga

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

ТипИмяОписание
viewportModeбитовые флаги; напрямую интерпретируется оборудованием Amiga

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

CMAP: палитра

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

CRNG: Цветовой диапазон

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

ТипИмяОписание
padding0x0000
rateСкорость цветового цикла. Единицы измерения таковы, что скорость 60 шагов в секунду представляется как 2 = 16384. Более низкие скорости могут быть получены путем линейного масштабирования: для 30 шагов в секунду скорость = 8192.
flagsФлаги, которые контролировать чередование цветов по палитре. Если бит 0 равен 1, цвета должны циклически меняться, в противном случае этот диапазон регистров цвета неактивен и не должен иметь никакого эффекта. Если бит 1 равен 0, цвета циклически меняются вверх, то есть каждый цвет перемещается в следующую позицию индекса на карте цветов, а самый верхний цвет в диапазоне перемещается вниз в самую низкую позицию. Если бит 1 равен 1, цвета меняются в противоположном направлении. Только те цвета между записями low и high в карте цветов должны циклически меняться.
lowИндекс первой записи в цветовой карте, которая является частью этого диапазона.
highИндекс последней записи в цветовой карте, которая является частью этого диапазона.

CCRT: Циклическое изменение цвета

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

ТипИмяОписание
directionНаправление цикла: 0 = без цикла, 1 = вперед, -1 = назад
lowвыбран самый низкий регистр цвета
highвыбран самый высокий регистр цвета
delaySecСекунды между сменой цветов
delayuSмикросекунды между сменой цветов (добавлено к delaySec для получения общего времени задержки)
padding0x0000

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

DEST: объединение битовых плоскостей

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

ТипИмяОписание
numPlanesКоличество битовых плоскостей в исходном изображении
pad1неиспользованный; используйте 0 для согласованности
planePickКак выбрать самолеты, чтобы разбросать их по целевому изображению
planeOnOffДанные по умолчанию для Plane Pick
planeMaskВыбирает, какие битовые плоскости сохранять в

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

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

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

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

GRAB: Hotspot

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

ТипИмяОписание
xКоордината X активной точки в пикселях относительно верхнего левого угла изображения
yКоордината Y активной точки в пикселей относительно левого верхнего угла изображения

SPRT: Z-порядок

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

ТипИмяОписание
orderZ-порядок изображения (0 - ближе всего к переднему плану, большие числа - дальше / позади)

TINY: Thumbnail

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

ТипИмяОписание
widthШирина эскиза, в пикселях
heightВысота эскиза в пикселях
BYTEданныеДанные пикселей, хранящиеся точно так же, как BODY кусок. Используйте точно такой же алгоритм, заменяя ширину и высоту из блока TINY вместо значений, взятых из блока BMHD .
Примечания по работе с ILBM

Карты цветов

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

Deep Images

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

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 битовых плоскостей в качестве индекса цвета.

Изображения PBM не могут существовать в дополнительном полубрайтовом режиме.

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

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

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

Управляющие флагиОписание
00Используйте битовые плоскости 0-3 (или 0-5) в качестве индекса цветовой карты как normal
10Использовать цвет предыдущего пикселя, но заменить синий компонент битами из битовых плоскостей 0-3 (или 0-5)
01Использовать цвет предыдущего пикселя, но заменить красный компонент битами из битовых плоскостей 0- 3 (или 0-5)
11Использовать цвет предыдущего пикселя, но заменить зеленый компонент битами из битовых плоскостей 0-3 (или 0-5)

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

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

Изображения PBM не могут существовать в режиме удержания и модификации.

Утилиты

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

Примечания

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

См. Также
  • Портал Amiga
Ссылки
Внешние ссылки
  • PNG2ILBM Преобразует файлы PNG в формат ILBM. Теоретически он может конвертировать любой PNG, включая альфа-канал и / или 16-битную глубину на канал. Он поддерживает передискретизацию, квантование, дизеринг, сохранение или переопределение регистров цвета на любых битовых плоскостях от 1 до 8, включая Extra-HalfBrite.
  • Graphics Workshop 1.1Y из середины 90-х может конвертировать из и во все варианты файлов ILBM ; он поддерживает множество других форматов файлов изображений. Он устарел, но все еще работает даже с Windows 10 при работе в режиме совместимости с Windows XP. Существует также более новая коммерческая версия, известная как Graphics Workshop Professional с гораздо более современным пользовательским интерфейсом (похоже, серединой 00-х годов), которая, однако, также устарела по сегодняшним стандартам.
  • Ultimate Paint может читать, писать и отображать анимацию цветового цикла палитры.
  • XnView nconvert - это бесплатный и актуальный конвертер командной строки.
  • Image Converter Plus - это программа, которая преобразует ILBM файлы в любое количество форматов. Хотя полная версия не является бесплатной, демонстрационная версия добавляет водяной знак, который можно удалить.
  • Paint Shop Pro 7.04 и другие старые версии PSP могут читать и записывать ILBM, но могут только читать файлы PBM. Особо упоминается PSP7, так как в условно-бесплатной версии есть ошибка, которая позволяет пропустить механизм завершения оценки, просто открыв файл (т. Е. Измените ярлык, чтобы всегда открывать файл, и вас это не побеспокоит).
Последняя правка сделана 2021-05-23 07:06:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте