Потоки
Поля и теги спроектированы таким образом, чтобы помочь программе получить быстрый доступ к нужным данным. Если позиция в файле известна, то программа может получить доступ к ней непосредственно, без предварительного чтения промежуточных данных. Файл, в котором данные организованы в виде потока, не дает таких возможностей и должен читаться последовательно. Мы предполагаем, что поток позволяет поддерживать блоки данных переменной длины, которые являются элементами потока и должны учитываться программой при чтении файла. Хотя начало и конец потока могут быть известны и заданы, местоположение блоков данных (за исключением первого) неизвестно и определяется в процессе чтения.
Комбинации элементов данных
Вы можете предположить, что существуют "чистые" файлы фиксированных полей (содержащие только фиксированные поля), "чистые" теговые файлы (содержащие только теги) и "чистые" потоковые файлы (содержащие только потоки). Однако файлы, состоящие из элементов одного типа, — большая редкость. Чаще применяются комбинации двух и более элементов данных. Например, форматы TIFF и TGA используют и теги, и фиксированные поля, а файлы формата GIF — фиксированные поля и потоки. Организация данных в виде фиксированных полей позволяет читать их значительно быстрее, чем данные, организованные в виде тегов или потоков. Однако файлы, содержащие в основном фиксированные поля, менее удобны при добавлении или удалении данных. Форматы, состоящие из фиксированных полей, с трудом расширяются. Данные, организованные в виде потоков, требуют для чтения и буферизации меньше памяти, чем данные, организованные в виде полей или тегов. Однако файлы, содержащие в основном потоковые данные, не поддерживают произвольный доступ и, следовательно, не могут быть использованы для быстрого поиска. Более подробно особенности применения файловых элементов будут рассмотрены в главах 3, 4 и 5.
Преобразование форматов
Часто возникает необходимость в преобразовании графического файла из одного формата в другой, например, при печати или для работы с настольной издательской системой. Хотя преобразование основных файловых форматов, как правило, не вызывает серьезных затруднений, для менее популярных форматов такие операции могут оказаться непростым делом. Преобразование же файла из формата одного типа в другой, например из растрового в векторный, может оказаться весьма проблематичным. Существуют программные продукты, позволяющие осуществлять большинство сложных преобразований.
Сжатие данных
Сжатие — это процесс уменьшения физического размера блока данных. Существует несколько способов сжатия. Мы будем различать физическое и логическое сжатие, симметричное и асимметричное, сжатие с потерями и без потерь, наиболее распространенные методы (или алгоритмы) сжатия:
· Упаковка пикселей фактически не является методом сжатия данных, но позволяет эффективно записывать их в последовательно расположенные байты памяти. Этот метод применяется в формате Macintosh PICT и других форматах, дающих возможность записывать несколько одно-, двух- или четырехбитовых пикселей в один байт памяти или дискового пространства.
· Групповое кодирование (Run-lenght encoding — RLE) является общим алгоритмом сжатия, применяемым в таких растровых форматах, как BMP, TIFF и PCX для уменьшения объема избыточных графических данных
• Алгоритм Lempel-Ziv-Welch (LZW) применяется в форматах GIF и TIFF, а также включен в стандарт сжатие данных для модемов v.42bis и является частью PostScript Level 2.
• Кодирование CCITT — форма сжатия данных, применяемая для факсимильной передачи и стандартизованная Международным консультативным комитетом по телеграфии и телефонии (CCITT). Стандарт базируется на схеме ключевого сжатия, предложенной Дэвидом Хаффменом, и широко известен как кодирование по алгоритм Хаффмена.
• Алгоритм, разработанный объединенной экспертной группой по фотографии (JPEG), — набор методов сжатия, используемых в основном для обработки изображений с плавным переходом тона и для мультимедиа. Базовая реализация JPEG применяет схему кодирования по алгоритму дискретных косинус-преобразований (DCT).
• Алгоритм, разработанный объединенной экспертной группой по двухуровневым изображениям (JBIG), — метод ( сжатия данных двухуровневых (двухцветных) изображений, который призван заменить алгоритмы сжатия МR (Modified READ) и MMR (Modified Modified READ), используемые CCITT Group 3 и Group 4.
• ART — патентованный алгоритм сжатия, разработанный фирмой Johnson-Grace, который в будущем можно будет адаптировать для поддержки аудио, анимации и полномасштабного видео.
• Фрактальное сжатие — математический процесс, используемый для кодирования растров, содержащих реальное изображение, в совокупность математических данных, которые описывают фрактальные (т.е. похожие, повторяющиеся) свойства изображения. В дальнейшем при описании каждого формата графического файла указываются применяемые в нем алгоритмы сжатия.
Сводка форматов
В большинстве систем для графических файлов предусмотрены специальные соглашения по расширениям. В трех наиболее распространенных системах (MS-DOS, Macintosh и UNIX) для имени файла используется соглашение вида имя.расширение. В других системах, где широко применяется компьютерная графика (Amiga, Atari и VMS), используются другие соглашения. Например, в VMS — это имя1.имя2:версия, где версия является целым числом, указывающим номер версии.
Сводка форматов
В табл.1.1 перечислены основные форматы графических файлов с указанием типа: растровый, векторный, метафайловый, описание сцены, анимационный, мультимедиа или другой. В большинстве систем для графических файлов предусмотрены специальные соглашения по расширениям. В трех наиболее распространенных системах (MS-DOS, Macintosh и UNIX) для имени файла используется соглашение вида имя.расширение. В других системах, где широко применяется компьютерная графика (Amiga, Atari и VMS), используются другие соглашения. Например, в VMS — это имя1.имя2:версия, где версия является целым числом, указывающим номер версии.