Среда, 27.05.2020, 16:20

ХОЧУ ВСЁ ЗНАТЬ!!!

 
Календарь
«  Май 2020  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Поиск
Друзья сайта
Вход на сайт

Меню сайта

Векторные файлы

Принципиальное отличие векторных файлов от растровых

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

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

Что такое векторные данные

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

 Первыми были векторные файлы

Векторные файлы появились практически в начале компьютерной эры и применялись для отображения линий на устройстве вывода. Дисплеи на базе электронно-лучевой трубки стали использоваться в качестве устройства вывода, управляемого компьютером, еще в 50-х годах. Первые дисплеи на базе электронно-лучевой трубки были устройствами с произвольным сканированием (подобно осциллографам) и позволяли строить изображения математических и геометрических фигур. Векторные устройства отображения в течение многих лет удовлетворяли потребности в отображении графической информации, давая возможность решать определенный круг задач. Для сохранения векторных данных использовались переносимые носители информации — перфокарты и перфоленты. Изображение логически разделялось на простейшие элементы, которые вычерчивались при визуализации в определенном порядке. Сохраненные данные легко экспортировались в виде списка операций черчения и математических описаний элементов изображения — размера, формы и позиции на экране дисплея, — записанных на запоминающем устройстве в том порядке, в котором они должны отображаться.

Независимость от устройств отображения

Как уже упоминалось, векторные изображения — это наборы независимых от устройств отображения математических описаний графических фигур Векторные форматы отличаются друг от друга в большей степени, чем растровые, потому что каждый из них проектировался для конкретных целей Если концептуально форматы, поддерживающие 1-битовые и 24-битовые растровые данные, отличаются незначительно, то различия между векторными форматами, которые используются программами САПР, и форматами, применяемыми для обмена общими данными, будут весьма существенными. Следовательно, обобщить векторные форматы тем же способом, что и растровые, — задача непростая. С другой стороны, большинство устройств вывода поддерживают сетку из пикселей, каждый из которых адресуется отдельно, как если бы поверхность отображения представляла собой бумагу в клеточку. Благодаря этому программа всегда может найти способ нарисовать элементы изображения в векторном формате.

Источники файлов в векторном формате

Простейшие векторные форматы используются электронными таблицами. Они обычно содержат числовые данные, которые затем отображаются на устройстве вывода в виде двухмерной сетки. Некоторые программы, не являющиеся электронными таблицами, используют форматы электронных таблиц для хранения данных, которые затем могут быть интерпретированы и как векторные, и как растровые. Однако большинство векторных форматов разработано для хранения чертежей и рисунков, созданных программами САПР. Пакеты САПР используются для выполнения чертежей механических и электрических систем, электронных макетов и схем, карт и графиков, а также всевозможных рисунков. Поэтому программы САПР поддерживают более сложную информацию, чем электронные таблицы, и, следовательно, нуждаются в более сложных векторных форматах.

CGM (Computer Graphics Metafile, метафайл компьютерной графики) — это пример формата, разработанного для обмена векторными данными. Этот формат стандартизован. Все элементы файла в формате CGM сконструированы из простейших объектов (линий и многоугольников), доступных для использования любой программой визуализации. Очень сложные объекты разбиваются на более простые элементы.

Формат AutoCAD DXF (Data eXchange Format, формат обмена данными) фирмы Autodesk также разработан с целью обмена векторными данными. Формат адаптируется распространителями и поддерживается только одной программой. Кроме того, DXF специально приспособлен для хранения информации САПР, применяемой при выполнении механических, электрических и архитектурных чертежей. Поэтому он поддерживает не только основные векторные элементы (окружности и многоугольники), но и сложные объекты, часто используемые в САПР (например, трехмерные объекты, размерные линии и штриховку).

Как организованы векторные файлы

Несмотря на то, что векторные файлы значительно отличаются друг от друга, большинство из них, подобно растровым, имеет определенную базовую структуру: заголовок, раздел данных и маркер конца файла. Такая структура позволяет корректно хранить векторные данные и интерпретировать их при визуализации. Общая информация, описывающая структуру файла, обычно помещается в заголовок, хотя иногда для этих целей может использоваться и концовка. Структура векторных файлов, как правило, проще, чем у большинства растровых; часто они организованы в виде потоков данных. Большая часть информации, содержащейся в файле, — данные изображения.

Основными компонентами простого векторного файла являются:

Заголовок

Данные изображения

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

Заголовок

Палитра

Данные изображения

Концовка

 

Заголовок

Заголовок содержит информацию, общую для всего векторного файла, и должен быть прочитан до того, как будет обрабатываться остальная информация. Общая информация может включать число, идентифицирующее файловый формат, номер версии и цветовую информацию. Кроме того, заголовки могут содержать значения атрибутов по умолчанию, которые будут применяться к любым элементам векторных данных этого файла, если значения их собственных атрибутов не заданы. Это не только позволяет сократить размер файла, но и обеспечивает возможность кэшировать информацию заголовка в процессе визуализации. Заголовки и концовки векторных файлов не всегда имеют постоянную длину. Существует немало векторных форматов, в которых для хранения данных применяются потоки данных переменной длины. В таком случае файл должен читаться последовательно; кроме того, такой файл обычно не содержит смещений, полезных при визуализации изображения. Информация, записанная в заголовке, определяется типом данных в файле и включает сведения о высоте и ширине изображения, его позиции на устройстве вывода, а также может содержать сведения о количестве слоев изображения. Таким образом, у двух файлов одного формата размеры заголовка могут быть неодинаковыми.

Векторные данные

Даже небольшие векторные файлы, как правило, состоят из элементарных векторных данных, которые содержат информацию об отдельных объектах изображения. Объем данных, используемых для представления каждого объекта, зависит от его сложности и тех возможностей по уменьшению размера файла, которые заложены в применяемом формате. После заголовка обычно размещаются данные изображения. Они состоят из элементов, являющихся наименьшими частями изображения. Каждый элемент либо однозначно связан с информацией по умолчанию, либо сопровождается информацией, задающей его размер, форму, относительную позицию в изображении, цвет и другие атрибуты. Векторные данные в формате ASCII, включающие три элемента (окружность, прямую и прямоугольник), могут выглядеть так:

;CIRCLE, 40, 100, 100, BLUE; LINE, 200, 50, 136, 227, BLACK; RECT, 80, 65, 25, 78, RED;

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

;CIRCLE, 40, 100, 100, BLUE; 200, 50, 136, 227, BLACK; RECT, 80, 65, 25, 78, RED;

Можем также не указывать черный цвет (по умолчанию):

; CIRCLE, 40, 100, 100, BLUE; 200, 50, 136, 227, RECT, 80, 65, 25, 78, RED;

Во многих форматах применяются аббревиатуры:

;С, 40, 100, 100, BL; 200, 50, 136, 227; R, 80, 65, 25, 78, R;

Обратите внимание на то, что использование символа R для определения и прямоугольника (RECT), и красного цвета (RED) не вызывает конфликтов, так как эти определения отличаются контекстом. Выбор ASCII вроде бы позволяет значительно облегчить чтение и анализ данных, но, к сожалению, может существенно увеличить их объем. В таком случае разработчик принимает решение уменьшить объем данных за счет применения правил и соглашении, а также использовать аббревиатуры (что делает формат неудобочитаемым). За данными изображения обычно следует маркер конца раздела данных или конца файла. Таким маркером может служить даже строка EOF в конце файла. Информация, сохраненная в концовке, обычно не является необходимой для корректной интерпретации данных при визуализации. Это могут быть дополнительные сведения, например, о времени и дате создания файла, имени создавшей его программы, количестве объектов, составляющих данное изображение.

Палитры и цветовая информация

Подобно растровым, векторные файлы могут содержать палитры Поскольку элементами данных, определенными в файле векторного формата, являются наименьшие объекты, то их цвет также должен быть определен. Прежде чем воспроизводить изображение, программа визуализации должна найти определение этого цвета в палитре файла. Можно откорректировать предыдущий пример, включив в него определение цветов (некую примитивную форму палитры, где цвет ассоциируется с его именем в формате ASCII):

RED, 255, 0, 0,

BLACK, 0, 0, 0,

BLUE, 0, 0, 255,

;С, 40, 100, 100, BL; 200, 50, 136, 227; R, 80, 65, 25, 78, R;

Некоторые векторные форматы позволяют определять замкнутые области, используя для этого контуры реальных элементов векторных данных, которые могут иметь разную толщину. Для изображения контуров применяются разные стили пера, т.е. комбинации точек и штрихов, используемые в техническом черчении и САПР. Нецветовые элементы информации, необходимые для визуализации изображения, называются элементарными атрибутами.

Атрибуты заполнения и цветовые атрибуты

Замкнутые элементы векторных данных могут быть спроектированы с учетом заполнения их цветом. Цвет заполнения обычно не зависит от цвета контура элемента; таким образом, каждый элемент может быть связан с двумя или более цветами, один из которых будет задан для контура элемента, а остальные — для заполнения. Цвета заполнения могут быть, в частности, прозрачными. Некоторые форматы позволяют определять так называемые цветовые атрибуты. Замкнутые элементы могут заполняться чистыми цветами, но могут содержать и штриховку или полутона, задаваемые так называемыми атрибутами заполнения. В некоторых случаях разобраться, где атрибуты заполнения, а где цветовые атрибуты, непросто, так как они были перепуганы либо еще при разработке формата (концептуально), либо непосредственно в файле (физически).

Форматы, не поддерживающие шаблоны заполнения, должны эмулировать их изображением частей шаблона (линий, окружностей, точек и т.д.) как отдельных элементов. Такой подход не только ухудшает качество заполнения, но и значительно увеличивает количество объектов в файле, а следовательно, его объем.

Градиентные заполнения

Замкнутый векторный элемент может быть заполнен несколькими цветами. Простейший способ осуществить такую операцию – использовать градиентное заполнение, которое представляет собой плавный переход цветов из одного в другой. Градиентные заполнения обычно хранятся в виде информации о начальном и конечном цветах, направлении и типе заполнения. Программа визуализации воспроизводит заполняемый объект с максимально возможным разрешением. К форматам, поддерживающим заполнение, относится CGM, который позволяет выполнить горизонтальное, вертикальное или кольцевое заполнение.

Концовка

Концовка может содержать информацию, записанную в файл после всех данных об объектах (например, о количестве объектов изображения). Однако в большинстве векторных форматов концовка используется просто для маркировки конца данных об объектах.

Размер векторного файла

Если не принимать в расчет палитру и информацию об атрибутах, можно сказать, что размер векторного файла прямо пропорционален количеству содержащихся в нем объектов. Это специфическая особенность векторных файлов, поскольку размер растрового файла не зависит от сложности описанного в нем изображения (на него может повлиять только способ сжатия данных). Размеры векторных файлов могут быть самыми разными. Формат может эффективно сохранять изображение, применяя некоторую форму сокращенной нотации, которая позволяет кратко определять сложные элементы. Например, один векторный формат может представлять кривую Безье в виде единственного сложного элемента, а другой формат, не поддерживающий кривых Безье, представит ту же кривую менее эффективно, возможно, в виде нескольких линий. Во втором случае размер файла значительно больше, чем в первом, поскольку каждая линия, представляющая какую-либо часть кривой Безье, хранится как отдельный элемент. Вероятно, одним из способов уменьшения размера файла может быть поддержка создания и присваивания имен составным элементам. Очень большой объем в файле занимают повторяющиеся в изображении элементы. Проблему можно разрешить следующим способом: определить один оригинальный элемент, а остальные сохранять в файле в виде указателя на его определение, а также в виде атрибутов и специфической информации для каждого повторяющегося элемента. Кроме того, на размер файла влияет способ сохранения в нем информации. Разные форматы могут поддерживать идентичную информацию множеством различных способов. Например, в формате CGM штриховой шаблон представляется в виде одного объекта, а в форматах PIC и Autodesk DXF каждая линия этого шаблона хранится как отдельный элемент. Векторные данные хранятся в виде чисел, поэтому масштабирование, вращение и другие манипуляции с векторными изображениями осуществляются проще и быстрее, чем с растровыми. Кроме того, поскольку масштабирование упрошено, то векторные файлы не ограничивают размеры изображения. Векторные форматы, в отличие от растровых, не поддерживают сжатие данных. Однако некоторые форматы допускают альтернативный метод кодирования и таким образом позволяют уменьшить объем файлов, не сокращая количество содержащейся в них информации. Например, уже упоминавшийся CGM обычно хранит векторную информацию в удобном для чтения символьном формате ASCII, однако позволяет записать ту же информацию в двоичном формате, уменьшив объем файла за счет читабельности и межплатформной переносимости. Формат DXF также имеет двоичный аналог, называемый DXB (Data eXchange Binaiy, обмен двоичными данными), который не только меньше по размеру, но и быстрее загружается порождающей его программой (AutoCAD). Однако этот формат не поддерживается другими программами.

Масштабирование векторных данных

Векторные элементы можно масштабировать, т.е. пропорционально изменять их размеры. Однако при увеличении или уменьшении векторного изображения во много раз могут возникнуть проблемы, связанные с точностью, переполнением и потерей знака. Понятия "намного увеличить" и "намного уменьшить" относятся к размерам элементов данньк, определяемых аппаратным и программным обеспечениями платформы, которая поддерживает программу визуализации. Другая проблема, с которой приходится достаточно часто сталкиваться, возникает при увеличении элементов, кажущихся замкнутыми: у двух визуально соединяющихся линий могут слегка не совпадать конечные точки, и это несовпадение при увеличении или повороте элемента может проявиться в виде разрыва. Если программа визуализации попытается отобразить этот элемент на устройстве вывода, то цвета заполнения или штриховка "поплывут". Большинство прогоамм, позволяющих создавать векторные файлы, обладают средствами, которые предотвращают подобные недоразумения, однако автоматическое применение этих средств перед сохранением файла не предусмотрено.

Текст в векторных файлах

Сохранить символьные строки в векторных форматах можно одним из двух способов. Простейший подход позволяет записывать текст в виде литеральных ASCII-строк, сопровождаемых информацией о шрифте, позиции, цвете и атрибутах. Хотя текст в этом случае хранится в компактной форме, применение такой схемы подразумевает, что программа визуализации распознает используемые шрифты, а это всегда проблематично. Поскольку названия шрифтов большей частью определяются распространителями, точно задать изображаемый шрифт довольно сложно. В формате CGM для решения этой проблемы применяется международный регистр имен шрифтов и связанных с ними описательных данных. Любая программа визуализации, поддерживающая CGM, должна иметь доступ к этим данным либо применять метрики шрифта, приведенные в заголовке данного CGM-файла. Поскольку текст хранится в формате, пригодном для чтения, то он может редактироваться. Второй и, пожалуй, более гибкий подход заключается в том, чтобы сохранять отдельные символы. Тогда символьная строка превращается в набор контуров, созданных из множества простейших элементов векторных данных. Согласно этой схеме, каждая программа, создающая файл, должна иметь доступ к шрифтовым контурам; поскольку эти контуры хранятся аналогично другим векторным данным, они могут быть масштабированы, повернуты и т.д. До недавних пор доступ к данным шрифтовых контуров был не всегда возможным, но распространители, осознав важность поддержки контурных шрифтов, теперь стали предоставлять такую возможность на уровне операционной системы. Поскольку графическая и шрифтовая индустрии развиваются параллельно, то естественна некоторая несовместимость в моделях хранения данных. Например, большинство шрифтов хранится в виде множеств сплайнов, а тип этих сплайнов может не поддерживаться используемым файловым форматом. В этом случае при создании файла нужно преобразовать сплайны в дуги или линии, однако такое преобразование может повлечь за собой появление нежелательных эффектов. Разработчики программ могут применять векторные или штриховые шрифты, которые представляют собой примитивные наборы контуров символов; их разработка не доставляет особых хлопот. Чаще всего распространители используют собственные штриховые шрифты. Применение векторных, штриховых или контурных шрифтов обычно катастрофически увеличивает размер файла, но оправдывается высоким качеством визуализации (особенно это касается контурных шрифтов, основанных на сплайнах). Штриховые шрифты в настоящее время применяются редко.

Преимущества и недостатки векторных файлов

К преимуществам векторных файлов можно отнести следующее:

 

·  Векторные файлы удобны для хранения изображений, состоящих из элементов, которые представлены линиями (например, из окружностей и многоугольников) или могут быть разложены на простейшие геометрические объекты (например, текст). Более сложные форматы позволяют хранить трехмерные объекты, такие как многогранники и каркасные модели.

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

•  Многие векторные файлы, содержащие данные только в формате ASCII, могут быть модифицированы с помощью простых средств редактирования текстов. Отдельные элементы могут быть добавлены, удалены или изменены без ущерба для других объектов изображения.

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

Ниже перечислены недостатки векторных файлов:

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

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

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

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

Метафайлы.

Метафайлы широко применяются для переноса растровых и векторных данных на разные аппаратные платформы. Поскольку они ориентированы на символы ASCII, то их использование разрешает, в частности, проблемы, связанные с применением определенного порядка байтов. Кроме того, снимаются проблемы при обменах двоичными файлами между сетями, где восьмой бит каждого байта ''съедается", что приводит к необходимости восстанавливать файлы. Способность метафайлов поддерживать и растровые, и векторные данные позволяет разработчику программы обеспечить поддержку одного (метафайлового) формата вместо двух — растрового и векторного. Метафайлы применяются и для обмена данными изображения между программными платформами. Например, создатель программы в метафайле может сохранить изображение и в растровой, и в векторной форме. Затем этот файл может быть прочитан любой программой (обрабатывающей либо растровые, либо векторные данные), которая поддерживает данный метафайловый формат. Например, многие настольные издательские системы могут манипулировать векторными данными и распечатывать их, но по разным причинам не в состоянии отображать их на экране. Чтобы избежать неприятностей такого рода, в метафайл часто включают растровое представление того же изображения. Тогда программа может прочесть из метафайла это растровое представление, воспроизвести изображение на экране и манипулировать им. Для вывода изображения на печать применяются векторные данные из того же метафайла. Отображение и печать файлов PostScript служит примером такой организации данных. Форматы метафайлов настолько разнообразны, что бессмысленно пытаться обнаружить общую для них иерархическую структуру. Большинство метафайлов содержит заголовок, за которым следуют один или несколько типов данных изображения. Некоторые метафайлы не хранят ничего, кроме растровых данных, другие вообще не содержат данных изображения в явном виде, заменяя их зашифрованными инструкциями отображения или, подобно векторным файлам, числовыми данными. Метафайлы в некотором смысле представляют собой "гибрид" растровых и векторных данных, поэтому на них распространяются и преимущества, и недостатки форматов обоих типов. Выбирая конкретный метафайловый формат, вы должны ориентироваться на преобладающий в файле тип данных (растровые или векторные), учитывая его особенности.

• Наряду с двоичными существуют и символьно-ориентированные (ASCII) метафайловые форматы, что значительно облегчает перенос данных из одной компьютерной системы в другую.

• Размер метафайла, содержащего смесь векторных и растровых данных, в некоторых случаях может оказаться меньше, чем размер растровой версии того же изображения.

• Поскольку метафайлы могут содержать данные в формате ASCII, они обычно отлично сжимаются.

• Большинство метафайлов очень сложны, поскольку обычно пишутся одной программой для другой программы. И хотя их символьная (ASCII) природа теоретически подразумевает возможность модификации с помощью текстового редактора, однако в действительности для этого требуются высокая квалификация и специальные знания.

Платформная зависимость

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

Порядок байтов

Обычно мы считаем, что информация в памяти или на диске организована в виде серий отдельных байтов данных. Эти данные читаются последовательно, в том порядке, в котором записаны байты. Такой тип организации называется байтовой организацией данных и обычно используется для хранения символьных строк и данных, созданных 8-разрядными процессорами. Однако не все компьютеры "смотрят на мир" через 8-битовое окно. Исходя из соображений эффективности, 16-, 32- и 64-разрядные процессоры предпочитают работать с байтами, организованными в 16-, 32- и 64-битовые ячейки, называемые соответственно словами, двойными словами и учетверенными словами. Порядок байтов в данных, организованных по словам, не всегда одинаков и определяется создавшим их процессором (однако обратите внимание на то, что уже есть процессоры, позволяющие изменять порядок байтов). Данные, организованные по байтам, не имеют определенного порядка и читаются одинаково на всех системах. А вот данные, организованные по словам, могут создать проблему, вероятно, наиболее распространенную среди тех, с которыми вы столкнетесь при обмене файлами между платформами. Она возникает в том случае, когда порядок байтов в словах, принятый в системе, в которой записывался файл, не совпадает с порядком, принятым в системе, в которой файл читается. Очевидно, что эти данные будут прочитаны некорректно. Порядок байтов в слове и двойном слове данных определяет то, как "оканчиваются" данные. Существует две основные схемы, определяющие порядок байтов: "оканчивается старшим", или "старший в младшем" (big-endian, буквально "тупоконечная"), и "оканчивается младшим", или "младший в младшем" (little-endian, буквально "остроконечная"). Системы, поддерживающие схему "оканчивается старшим", хранят самый старший байт (MSB) в младшем-адресе слова, обычно адресуемом как байт 0. Такие системы в основном базируются напроцессорах серии МС68000А фирмы Motorola (68000, 68020, 68030, 68040 и т.д.), включая компьютеры Amiga фирмы Commodore, Macintosh фирмы Apple и некоторые UNIX-машины. Системы, поддерживающие схему "оканчивается младшим", хранят в младшем адресе слова самый младший байт (LSB). 2-байтовое слово, содержащее значение 1234h, которое записано в файл в формате "оканчивается младшим", в системе, поддерживающей формат "оканчивается старшим", будет прочитано как 3412h. Это произойдет потому, что система "оканчивается старшим" предполагает, что MSB будет иметь значение, записанное в младшем адресе. Однако система "оканчивается младшим" поместила MSB в старший адрес. При чтении байты в слове поменялись местами. Компьютеры, поддерживающие схему "оканчивается младшим", в основном базируются на процессорах серии 1АРХ86 фирмы Intel (8088, 80286, 80386, 80486 и т.д.), включая IBM PC и клоны. Третий термин — "оканчивается в середине" (middle-endian, буквально "среднеконечный") — используется для всех компьютеров, организованных по схемам 3-4-1-2, 2-1-4-3, 2-3-0-1 и 1-0-3-2. Примером такого компьютера является PDP-11 фирмы DEC, на котором для двойных слов (DWORD) применена схема порядка байтов 2-3-0-1. Программы ввода-вывода всегда читают данные, организованные по словам, в порядке байтов, характерном для компьютера, на котором разрабатывалась программа. Из этого следует, что функции вроде fread() vifwrite() не знают порядка байтов и не могут выполнить необходимые преобразования. Однако большинство языков программирования включают функции, которые позволяют поменять местами байты в массиве. Правда, применение функции swab() для преобразования слов данных из одного порядка байтов в другой весьма неэффективно, поскольку слова резмером более двух байтов приходится вызывать многократно.

Программистам, работающим с растровыми файлами, также нужно заботиться о порядке байтов, поскольку многие популярные форматы, например Macintosh Paint (MacPaint), Interchange File Format (IFF или AmigaPaint) и Sun Raster, всегда читают и записывают файлы изображений в порядке "оканчивается старшим". Файлы формата TIFF являются уникальными и в этом смысле, поскольку любой файл TIFF может быть прочитан в любом порядке байтов, и программа чтения может применять порядок байтов, действующий в той системе, на которой она выполняется.

Размер файла и ограничение объема памяти

Еще одна распространенная проблема — это обработка больших файлов. Многие системы имеют ограниченный объем памяти, например системы, работающие в среде MS-DOS, ранние модели Macintosh или некоторые персональные компьютеры. Размер буфера памяти, доступного на таком компьютере, может оказаться меньше, чем это требуется для обработки блока данных, в то время как более мощные компьютеры легко справляются с такими объемами данных. При разработке некоторых форматов эти ограничения учитываются. Многие проблемы вызваны аппаратными ограничениями или особенностями взаимодействия аппаратных и программных средств. Несмотря на проявившуюся в последние годы ориентацию программ преимущественно на 32-разрядные платформы (