БРДМ
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
Расширение имени файла | .iff , .lbm |
---|---|
Тип интернет-СМИ | изображение/x-ilbm |
Разработано | Электронное искусство |
Первоначальный выпуск | 14 января 1985 г. |
Тип формата | Форматы файлов изображений |
Содержится | Формат файла обмена |
Стандартный | EA IFF 85: Стандарт формата обмена [1] [2] [3] |
Открытый формат ? | Исходный код, являющийся общественным достоянием |
Чередованное растровое изображение ( ILBM ) — это формат файла изображения, соответствующий стандарту Interchange File Format (IFF). Формат зародился на платформе Amiga , а в IBM-совместимых системах файлы этого формата или связанного с ним формата PBM (Planar Bitmap) обычно встречаются в играх конца 1980-х и начала 1990-х годов, которые либо были портами Amiga , либо имели разработанные графические ресурсы. на машинах Amiga. [ нужна ссылка ]
Характерной особенностью формата является то, что он хранит растровые изображения в виде чередующихся битовых плоскостей , что и дало формату его название; это отражает способ, которым графическое оборудование Amiga изначально считывает графические данные из памяти. Packbits — простая форма сжатия , позволяющая сделать файлы ILBM более компактными. [4]
На Amiga эти файлы не связаны с конкретным расширением файла , хотя, когда они начали использоваться в системах ПК, где расширения используются систематически, они использовали расширение .lbm или иногда расширение .pbm . [ нужна ссылка ]
Формат файла
[ редактировать ]ILBM — это реализация формата файла IFF , состоящая из ряда последовательных фрагментов, порядок которых может в некоторой степени меняться. Каждый фрагмент имеет разные функции и имеет один и тот же базовый формат. Это означает, что программе не нужно читать или декодировать каждый фрагмент файла, а только те, с которыми она хочет иметь дело или те, которые она может понять. [4]
Файлы ILBM обычно содержат достаточно информации, чтобы их можно было отобразить с помощью программы редактирования изображений, включая размеры изображения, палитру и данные пикселей. Некоторые файлы были разработаны для использования в качестве палитр для программ рисования (данные пикселей оставлены пустыми) или для объединения с другим изображением. Это делает их гораздо более гибкими, но и более сложными, чем другие форматы, такие как BMP. [ нужна ссылка ]
Для ILBM фрагмент BMHD (заголовок битовой карты) и любые другие «важные» фрагменты должны располагаться перед фрагментом BODY . Любые фрагменты, появляющиеся после BODY, считаются «лишними», и многие программы оставляют их непрочитанными и неизмененными. [4]
Тип | Имя | Описание |
---|---|---|
ФУРСС | идентификатор фрагмента | "ФОРМА" |
UINT32BE | lenChunk | Длина данных фрагмента в байтах. Не включает байт заполнения. Будет равен размеру файла минус восемь байт (это поле и chunkID в расчет не входят) |
ФУРСС | идентификатор формата | «ИЛБМ» или «ПБМ» |
БАЙТ[ленЧанк - 12] | содержание | Фактические данные фрагмента, состоящего из других подблоков ниже. |
БАЙТ | подушечка | Необязательный байт заполнения, присутствует только в том случае, если lenChunk не кратно 2. |
BMHD: заголовок растрового изображения
[ редактировать ]Чанк BMHD определяет, как должно отображаться изображение, и обычно является первым часком внутри FORM . Он определяет не только высоту/ширину изображения, но и то, где оно отображается на экране, как отображать его при различных разрешениях экрана и сжимается ли изображение. Содержимое этого фрагмента следующее: [4]
Тип | Имя | Описание |
---|---|---|
UINT16BE | ширина | Ширина изображения, в пикселях |
UINT16BE | высота | Высота изображения, в пикселях |
INT16BE | xOrigin | Где на экране в пикселях находится верхний левый угол изображения. Значение обычно равно 0,0, если изображение не является частью большего изображения или не полноэкранным. |
INT16BE | yOrigin | |
UINT8 | numPlanes | Количество плоскостей в растровом изображении; 1 для монохромного режима, 4 для 16 цветов, 8 для 256 цветов или 0, если имеется только карта цветов и нет данных изображения. (т. е. этот файл представляет собой просто карту цветов.) |
UINT8 | маска | 1 = замаскированный, 2 = прозрачный цвет, 3 = лассо (для MacPaint). Данные маски не считаются битовой плоскостью. |
UINT8 | сжатие | Если 0, то без сжатия. Если 1, то данные изображения сжимаются по протоколу RLE. Если 2 "Вертикальных РЛЭ" из Deluxe Paint для Atari ST. Теоретически возможны и другие значения, представляющие другие методы сжатия. |
UINT8 | площадка1 | Игнорировать при чтении, при записи установить значение 0 для совместимости в будущем. |
UINT16BE | трансклир | Прозрачный цвет, полезен только тогда, когда mask >= 2 |
UINT8 | xAspect | Пиксельный аспект, соотношение ширины:высоты; используется для отображения изображения на экране с различными разрешениями 320x200, 5:6 или 10:11. |
UINT8 | yАспект | |
INT16BE | ширина страницы | Размер экрана, на котором будет отображаться изображение, в пикселях, обычно 320×200. |
INT16BE | страницаВысота |
ТЕЛО: данные изображения.
[ редактировать ]Чанк BODY обычно является последним чаном в файле. [4] и самый большой [ нужна ссылка ] .
В файлах ILBM фрагмент BODY хранит фактические данные изображения в виде чередующихся битовых плоскостей (и необязательной маски) по строкам. Сначала появляются битовые плоскости от 1 до n, а затем плоскость маски. Если изображение несжато, каждая строка будет состоять из (width + 15) / 16
16-битные значения (т.е. один бит на пиксель, округленный до ближайшего числа, кратного 16 битам). Если оно сжимается, то каждая строка сжимается индивидуально и при сжатии всегда имеет длину, кратную 16 битам. [4]
В файлах PBM фрагмент BODY проще, поскольку в несжатом виде это просто непрерывный поток байтов, содержащий данные изображения. [ нужна ссылка ]
Сжатие
[ редактировать ]Если изображение сжато, каждая строка данных (но не каждая битовая плоскость) сжимается индивидуально, включая данные маски, если они присутствуют. Сжатие представляет собой разновидность сжатия RLE с использованием флагов. Его можно расшифровать следующим образом: [4]
- Продолжайте цикл, пока не получим [Окончательная длина] данных в байтах (окончательная длина рассчитывается на основе размера изображения).
- Пока [Длина распакованных данных] < [Окончательная длина]:
- Прочитать байт [значение]
- Если [Значение] > 128, то:
- Прочитайте следующий байт и выведите его (257 - [Значение]) раз.
- Переместитесь на 2 байта вперед и вернитесь к шагу 1.
- Иначе, если [Значение] < 128, то:
- Прочитайте и выведите следующие [значение + 1] байт.
- Переместиться вперед на [значение + 2] байта и вернуться к шагу 1.
- Иначе [Значение] = 128, выйти из цикла (прекратить распаковку)
Для процедуры сжатия лучше всего закодировать повторный запуск размером 2 байта как повторный запуск, за исключением случаев, когда ему предшествует и за ним следует литеральный запуск, и в этом случае лучше всего объединить три литеральных запуска в один литеральный запуск. Всегда кодируйте повторы >3 байтов при повторных запусках. [4]
CAMG: режим Amiga
[ редактировать ]Чанк CAMG предназначен специально для компьютера Commodore Amiga. Он хранит ДЛИННЫЙ «режим области просмотра». Это позволяет вам указать режимы отображения Amiga, такие как «двойное игровое поле» и «удерживать и изменять». Неудивительно, что это редкость за пределами игр Amiga. [ нужна ссылка ]
Тип | Имя | Описание |
---|---|---|
UINT32BE | режим просмотра | битовые флаги; напрямую интерпретируется оборудованием Amiga |
Если вам нужно преобразовать или отобразить файлы, которые могут содержать значимые фрагменты CAMG, см. «Примечания по работе с файлами ILBM» ниже.
CMAP: Палитра
[ редактировать ]Блок CMAP содержит палитру изображения и состоит из 3-байтовых значений RGB для каждого используемого цвета. Каждый байт находится в диапазоне от 0 до 255 включительно. Кусок 3 × numColours
длиной в байтах. Количество цветов в палитре составит 2 ^ numBitplanes
. Этот фрагмент не является обязательным, и если его нет, будет использоваться палитра по умолчанию. Возможно иметь меньше записей, чем ожидалось (например, 7 цветов для 4-плоскостного растрового изображения «16 цветов»). Помните, что если оно имеет нечетное количество цветов, согласно спецификации IFF, фрагмент будет дополнен одним байт, чтобы его длина была четной, но байт заполнения не включается в поле длины фрагмента. [4]
CRNG: Цветовой диапазон
[ редактировать ]Блок цветового диапазона является «нестандартным». Он используется программой Deluxe Paint от Electronic Arts для идентификации непрерывного диапазона регистров цвета или «диапазона оттенков» и циклического изменения цвета. может быть ноль или более фрагментов CRNG В файле ILBM , но все они должны располагаться перед фрагментом BODY . Deluxe Paint обычно записывает 4 фрагмента CRNG в ILBM, когда пользователь просит его «Сохранить изображение». [4]
Тип | Имя | Описание |
---|---|---|
INT16BE | прокладка | 0x0000 |
INT16BE | ставка | Скорость цветового цикла. Единицы измерения таковы, что скорость 60 шагов в секунду представляется как 2. 14 = 16384. Более низкие скорости можно получить путем линейного масштабирования: для 30 шагов в секунду скорость = 8192. |
INT16BE | флаги | Флаги, управляющие цикличностью цветов в палитре. Если бит 0 равен 1, цвета должны циклически изменяться, в противном случае этот диапазон регистров цветов неактивен и не должен иметь никакого эффекта. Если бит 1 равен 0, цвета циклически перемещаются вверх, т. е. каждый цвет перемещается на следующую индексную позицию в карте цветов, а самый верхний цвет в диапазоне перемещается вниз на самую нижнюю позицию. Если бит1 равен 1, цвета циклически меняются в противоположном направлении. Циклически должны меняться только те цвета, которые находятся между нижним и верхним значениями на карте цветов. |
UINT8 | низкий | Индекс первой записи в карте цветов, которая является частью этого диапазона. |
UINT8 | высокий | Индекс последней записи в карте цветов, которая является частью этого диапазона. |
CCRT: циклическое изменение цвета
[ редактировать ]Программа Commodore Graphicraft использует CCRT для диапазона и синхронизации цветов . Этот чанк содержит структуру CycleInfo. Как и CRNG, это нестандартный чанк. [4]
Тип | Имя | Описание |
---|---|---|
INT16BE | направление | Направление цикла: 0=нет цикла, 1=вперед, -1=назад. |
UINT8 | низкий | выбран наименьший регистр цвета |
UINT8 | высокий | выбран наивысший регистр цвета |
INT32BE | задержкасек | Секунды между сменой цветов |
INT32BE | delayuS | Микросекунды между сменой цветов (добавляется к DelaySec, чтобы получить общее время задержки) |
INT16BE | прокладка | 0x0000 |
Данные аналогичны фрагменту CRNG . Программа, вероятно, будет использовать только один из этих двух методов выражения данных цветового цикла. Вы можете написать оба, если хотите передать эту информацию как в DeluxePaint, так и в Graphicraft. [4]
DEST: объединение битовых плоскостей
[ редактировать ]Необязательное свойство DEST — это способ управления тем, как разбросать ноль или более исходных битовых плоскостей в более глубокое целевое изображение. Некоторые читатели могут игнорировать DEST. [4]
Тип | Имя | Описание |
---|---|---|
UINT8 | numPlanes | Количество битпланов в исходном изображении |
UINT8 | площадка1 | неиспользованный; используйте 0 для согласованности |
UINT16BE | самолетВыбрать | Как выбрать самолеты, чтобы разбросать их по месту назначения |
UINT16BE | самолетВкл.Выкл. | Данные по умолчанию для выбора плоскости |
UINT16BE | самолетМаска | Выбирает, в каких битовых плоскостях хранить |
Число битов глубины младшего порядка в 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 находит «дескриптор» или «горячую точку» изображения относительно его верхнего левого угла, например, при использовании в качестве курсора мыши или «кисти». Это необязательно. [4]
Тип | Имя | Описание |
---|---|---|
INT16BE | х | Координата X горячей точки в пикселях относительно верхнего левого угла изображения. |
INT16BE | и | Координата Y горячей точки в пикселях относительно верхнего левого угла изображения. |
SPRT: Z-порядок
[ редактировать ]Кусок SPRT указывает, что изображение должно быть спрайтом. Таким образом, он должен иметь плоскость маски или прозрачный цвет и не должен быть полноэкранным. Как это обрабатывается, зависит от программы, использующей изображение. Единственные данные, хранящиеся здесь, — это порядок спрайтов, используемый многими программами для размещения спрайта на переднем плане (спрайт порядка 1 появляется позади спрайта порядка 0 и т. д.). Это необязательно. [4]
Тип | Имя | Описание |
---|---|---|
UINT16BE | заказ | Z-порядок изображения (0 находится ближе всего к переднему плану, большие числа находятся дальше/позади) |
КРОШЕЧНЫЙ: Миниатюра
[ редактировать ]Чанк TINY содержит небольшое изображение предварительного просмотра для различных графических программ, включая Deluxe Paint. Он сжат и по формату аналогичен фрагменту BODY . [ нужна ссылка ]
Тип | Имя | Описание |
---|---|---|
UINT16BE | ширина | Ширина миниатюры, в пикселях |
UINT16BE | высота | Высота миниатюры, в пикселях |
БАЙТ[] | данные | Пиксельные данные, хранящиеся точно так же, как фрагмент BODY . Используйте точно такой же алгоритм, заменяя ширину и высоту из фрагмента TINY вместо значений, взятых из фрагмента BMHD . |
Примечания по работе с 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 битовых плоскостей, может быть изображением в оттенках серого:
И0 И1 И2 И3 И4 И5 И6 И7
Экстра полубрайт
[ редактировать ]Если файл 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]
Флаги управления | Описание |
---|---|
00 | Используйте битовые плоскости 0–3 (или 0–5) в качестве индекса карты цветов, как обычно. |
10 | Используйте цвет предыдущего пикселя, но замените синий компонент битами из битовых плоскостей 0–3 (или 0–5). |
01 | Используйте цвет предыдущего пикселя, но замените красный компонент битами из битовых плоскостей 0–3 (или 0–5). |
11 | Используйте цвет предыдущего пикселя, но замените зеленый компонент битами из битовых плоскостей 0–3 (или 0–5). |
Если первый пиксель строки сканирования является пикселем модификации, измените и используйте цвет границы изображения. [4]
Обратите внимание: при использовании 4 битов для изменения цветового компонента вам следует использовать 4 бита в верхних 4 битах компонента И в нижних 4 битах (во избежание уменьшения общей цветовой гаммы). При использовании 6 бит это менее важно, но вы все равно можете поместить 2 старших бита битов модификации в два младших бита компонента цвета. [4]
Изображения PBM не могут существовать в режиме удержания и изменения. [ нужна ссылка ]
Утилиты
[ редактировать ]Большинство утилит, работающих с файлами ILBM и PBM, устарели, например MacPaint или Deluxe Paint . IrfanView позволяет просматривать файлы, бесплатен для некоммерческого использования и может работать под Linux. [ нужна ссылка ] Netpbm может конвертировать изображения из ILBM в собственный PPM. формат [5] и обратно. [6] вдохновленный краской Роскошный GrafX2, Графический редактор пиксельной графики может загружать и сохранять файлы ILBM, но его количество ограничено максимум 256 цветами, поэтому изображения HAM или 24-битные ILBM не будут отображать все цвета. ImageMagick и GraphicsMagick также могут отображать и преобразовывать изображения ILBM, если ilbmtoppm и ppmtoilbm установлены утилиты из Netpbm.
Примечания
[ редактировать ]В серии игр Commander Keen Dreams сжатые отдельные изображения ILBM используются для титульных экранов, но игра не считывает большую часть фрагментов ILBM. Это связано с тем, что изображения были отредактированы в DeluxePaint, а затем импортированы непосредственно в файлы игры. [ нужна ссылка ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Джерри Моррисон (14 января 1985 г.). «EA IFF 85: Стандарт для файлов формата обмена» . Электронное искусство . Проверено 6 марта 2014 г.
- ^ Джерри Моррисон (17 января 1986 г.). " "ILBM" Чередованное растровое изображение IFF" . Электронное искусство . Архивировано из оригинала 13 июня 2014 г. Проверено 6 марта 2014 г.
- ^ Джеймс Д. Мюррей; Уильям ванРайпер (апрель 1996 г.). Энциклопедия форматов графических файлов, второе издание . О'Рейли . ISBN 1-56592-161-5 . Проверено 27 февраля 2014 г.
- ^ Jump up to: а б с д и ж г час я дж к л м н тот п д р с т в v В х и С «ILBM IFF с чередующимся растровым изображением» . 8 июня 2012 года . Проверено 30 июля 2018 г.
- ^ Джеф Посканцер; Инго Вилкен (12 ноября 2014 г.). "илбмтоппм" . Проверено 13 июня 2019 г.
- ^ Джеф Посканцер; Инго Вилкен (28 июня 2015 г.). "ппмтоилбм" . Проверено 13 июня 2019 г.
Внешние ссылки
[ редактировать ]- PNG2ILBM Преобразует файлы PNG в формат ILBM и ACBM. Он может конвертировать любой PNG, включая альфа-каналы и/или 16-битную глубину каждого канала. Он поддерживает передискретизацию, квантование, сглаживание, сохранение или переопределение регистра цвета на любых битовых плоскостях от 1 до 8, включая Extra-HalfBrite и Hold And Modify.
- Graphics Workshop 1.1Y середины 90-х годов может конвертировать все варианты файлов ILBM; он поддерживает множество других форматов файлов изображений. Он устарел, но по-прежнему работает даже в Windows 10 при работе в режиме совместимости с Windows XP. Существует также более новая коммерческая версия, известная как Graphics Workshop Professional, с гораздо более современным пользовательским интерфейсом (похоже, середины 00-х годов), который, однако, также устарел по сегодняшним стандартам.
- Ultimate Paint может читать, записывать и отображать анимацию цветового цикла палитры.
- nconvert от XnView — это бесплатный и актуальный конвертер командной строки.
- Image Converter Plus — это программа, которая конвертирует файлы ILBM в любое количество форматов. Хотя полная версия не бесплатна, в демо-версии добавлен водяной знак, который можно удалить.
- Paint Shop Pro 7.04 и другие более старые версии PSP могут читать и записывать ILBM, но могут читать только файлы PBM. PSP7 заслуживает особого упоминания, так как в условно-бесплатной версии есть ошибка, которая позволяет пропустить механизм завершения оценки, просто открыв файл (т.е. измените ярлык, чтобы файл всегда открывался, и вас это не будет беспокоить).