Как устроены файлы? Разбор
Файлы… что вообще может быть проще? Мы все привыкли создавать, удалять, редактировать, перекидываться файлами.
Но можем ли мы заглянуть внутрь каждого файла и понять как он устроен? Конечно можем, поэтому сегодня мы немного покопаемся в бинарном коде и пощупаем метаданные.
Заодно узнаем, почему iPhone зависает от SMS и распотрошим PowerPoint.
Почему форматов файлов так много?
Если бы мы просто могли взглянуть на сырые данные, которые хранятся внутри жесткого диска или SSD, то мы бы не увидели никаких файлов: мы бы увидели только нолики и единички. Потому как, в любом случае, в памяти компьютера всё хранится в виде сплошного потока двоичного кода.
Но как же тогда понять, где заканчивается один файл и начинается другой?
Поначалу эту проблему человечество решало брутально. Люди записывали один файл на один жесткий диск, чтобы уж точно не ошибиться. Поэтому раньше словом файл называли не отдельную область на жестком диске, а прям целое устройство. К примеру IBM 305.
CTSS (Compatible Time-Sharing System)
Но потом, люди придумали файловые системы. Если очень упростить, это такое оглавление в котором указано имя файла, где он начинается и его длина. А также всякие метаданные, типа время создания, изменения, и можно ли его перезаписывать.
Но для того чтобы прочитать файл, знать его местоположение и границы на жестком диске недостаточно, ведь нам нужно как-то расшифровать бинарный код.
Для этого и существуют различные форматы файлов. В большинстве операционных систем форматы файлов указываются в виде расширения, которое отделяется точкой от имени файла. А если вы не видите расширения, это нормально. Потому что, по умолчанию, современные ОС их скрывают, но можно поставить галочку в настройках.
Расширение даёт подсказку операционной системе и программам, о том какой тип данных он содержит и как это всё структурировано. Например, увидев файл droider.jpg операционная система и мы, люди, сразу понимаем, что это картинка в формате JPEG.
Естественно, для типов данных и разных задач оптимальной будет разная структура файла. Поэтому и форматов файлов существует огромная масса.
Поэтому давайте разберем, как устроены наиболее популярные форматы файлов от более простых к более сложным.
TXT
Один из самый простых форматов — это TXT. Это текстовый формат. Знаменитое приложение «Блокнот» в Windows работает как раз с этим форматом.
TXT — формат незамысловатый. Он может хранить в себе только простой неформатированный текст, то есть в нем нет никаких выделений, подчеркиваний, курсивов, отступов, разных шрифтов. Только голый текст, а точнее просто символы.
Каждый символ в TXT-формате хранится в виде бинарного кода.
То что мы с вами видим как осмысленный текст, операционная система видит вот так:
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001
Каждые 8 цифр, то есть 8 бит этого кода — это отдельный символ.
Например, 01001000 — это “H”, 01100101 — это “e”, и так далее.
Но как операционная система расшифровывает эти данные? Всё просто. Операционной системе требуется загрузить таблицу, в которой описано соответствие бинарного кода конкретному символу. Таких таблиц много, самые известные сегодня — CP1251 (Windows), UTF-8 (Android, Mac) и так далее. Такие таблицы, часто называют кодировками. В данном файле используется кодировка UTF-8, то есть 8-битный Юникод.
Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-бит»
Подобрав правильную кодировку остается дело техники. Система сопоставляет бинарный код с таблицей кодировки UTF-8 и готово! Но что будет если система подберет кодировку неправильно? Вариантов не много, скорее всего мы увидим крякозябры:
И такое часто случается, так как TXT-файл не содержит никакой дополнительной информации о кодировке. И это большой недостаток формата.
Еще интересный момент. Исторически, компьютеры «знали» только латиницу, которая используется в большинстве европейских языков. И тут произошла проблема: 8-бит — это всего лишь 256 возможных значений. Это немного, но этого было достаточно, чтобы закодировать все базовые символы + латинские буквы.
И вдобавок, эту таблицу нужно было загрузить в оперативную память при загрузке компьютера, а у типового ПК в начале 80-х годов редко было больше 640 килобайт оперативки. А использовать 16-битные таблицы (65536 вариантов) было просто невозможно, такая таблица просто не влезла бы в память.
Но мощность компьютеров росла и проблема ушла. К таблицам с латинскими символами добавились кириллические, которые занимали уже не по 8 бит, а по 16 бит каждый. Поэтому текст на русском занимает в два раза больше памяти, при том же количестве символов.
11010000 10011111 11010001 10000000 11010000 10111000 11010000 10110010 11010000 10110101 11010001 10000010 00101100 00100000 11010000 10111100 11010000 10111000 11010001 10000000 00100001
11010000 10011111 — П
11010001 10000000 — р
10111000 11010000 — и
11010000 10110010 — в
Старики помнят лайфхак, если писать SMS на латинице, то влезет в два раза больше текста. Всё это как раз из-за кодировки.
Кстати, помните все эти случаи, когда iPhone умирал от присланного сообщения со странными символами или картинки? Это как раз связано с тем, что система не могла правильно распознать присланные символы и правильно определить их длину.
Например, вот такое сообщение в своё время заставляло любой айфон уйти в цикличный ребут:
WAV
Так вот, чтобы у операционной системы не было проблем с пониманием как прочитать файл. Помимо самих данных, в разные форматы стали добавлять данные о данных. То есть метаданные, которые хранятся прямо внутри файла и содержат дополнительную информацию о том, как этот файл прочитать.
Это простой аудиоформат, который содержит несжатый. Всё CD диски записаны в формате WAV.
Первые 44 байта классического WAV-файла содержат заголовок, к котором указывается полезнейшая информация:
- количество аудио каналов;
- частота дискретизации;
- битовая глубина;
- и многое другое.
Открытые и проприетарные форматы
Структура WAV хорошо известна и наверное такой файл сможет прочитать практически любой плеер. Всё потому, что WAV-файл — это пример открытого формата.
Есть и другие открытые форматы, которыми вы ежедневно пользуетесь. Например:
- язык разметки web-страниц — HTML;
- картинки — PNG;
- аудио в формате — OGG;
- архива — ZIP;
- видео — MKV;
- электронной книги — EPUB;
- и другие.
Проприетарные форматы всем прекрасны, но в отдельных случаях они препятствуют конкуренции в сфере программного обеспечения, так как приводят к замыканию на поставщике. Есть даже такой термин Vendor lock-in.
Старый офис
Например, раньше такая ситуация была с форматами Microsoft Office: DOC, XLS, PPT.
Мало того, что это были проприетарные форматы компании Microsoft и работали только с фирменным ПО. Так еще Microsoft постоянно меняли свою структуру файлов от одной версии MS Office к другой. И в результате? при выходе новой версии офисного пакета? файлы из старого редактора уже не читались новым, а наоборот — и подавно.
Такая ситуация не очень нравилась Европейскому Союзу. Поэтому, ЕС взъелся на тему ограничения конкуренции. В итоге, форматы файлов опубличили, и все научились хотя бы их читать, но для записи в старые форматы, по-прежнему, нужна лицензия Microsoft. И параллельно этому начали разрабатываться открытые форматы.
ODF и OOXML
1 мая 2006 года на свет появился формат формат ODF, что буквально расшифровывается как открытый формат документов для офисных приложений. Он был разработан консорциумом OASIS и Sun Microsystems.
- ODF — Open Document Format for Office Application.
- OASIS — Organization for the Advancement of Structured Information Standards.
Microsoft тоже не спал. Под давлением Европейского суда они объединились с рядом компаний в ассоциацию ECMA и разработали свой открытый формат Office Open XML, который появился на свет чуть позже в 2006 году.
OOXML стандартизирован European Computer Manufacturers Association. Standard ECMA-376
К привычным форматом конце добавилась буква X и мы получили: DOCX, XLSX, PPTX.
OOXML — Office Open XML (DOCX, XLSX, PPTX)
OOXML, в целом, очень похож на ODF. Он также основан на XML-разметке и также представляет из себя ZIP-архив. Поэтому вы также можете заглянуть внутрь офисных файлов при помощи любого архиватора. Можно даже вытащить картинки и даже подменить их, что бывает особенно удобно при работе с презентациями или когда вам присылают текстовый документ с картинками внутри файла.
Несмотря на кажущуюся простоту, формат реально сложный. Только основная документация — это 5 тысяч страниц. И это практически без картинок.
Тем не менее, кто-то всё таки смог прочитать всю эту документацию и поэтому на свет появились классные офисные пакеты, например МойОфис, которые умеют работать и ODF форматом, и с Office Open XML, и даже с устаревшими форматами типа DOC.
Но есть важная ремарка про старые форматы. Как правило, современный софт умеет их только читать, но не записывать, потому как это действие требует приобретение лицензии Microsoft. Впрочем, в наше время это действие, мягко говоря, бессмысленно.
Итого
Что мы в итоге узнали? Файлы бывают нескольких типов:
Самые базовые — бинарные. Такие форматы любят придумывать компании, чтобы никто не понял, как их программы хранят данные.
Более открытый вариант — xml-контейнеры. К счастью, большинство популярных офисных форматов сейчас такие. Если хотите работать со всеми этими файлами хоть дома, хоть на бегу, скачивайте программы МойОфис! На этом у нас сегодня всё.
- Блог компании Droider.Ru
- Программирование
- Разработка под Windows
Бинарный формат
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary ) цифр.
В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.
Часто двоичными файлами называют исполняемые файлы и сжатые данные, однако некорректно так ограничивать это понятие.
Визуализация
Для наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе, иногда в восьмеричной, двоичной или десятичной. Означенный размер куска может быть равен одному октету, а также двум или четырём (в случае разбиения на куски по несколько октетов применяется порядок байтов, принятый на используемой платформе). Зависимость диапазона представляемых чисел от размера куска показана в таблице:
октетов | кол-во бит | шестнадцатеричное | восьмеричное | десятичное беззнаковое | десятичное знаковое |
---|---|---|---|---|---|
1 | 8 | 00 … FF | 000 … 377 | 0 … 255 | -128 … 127 |
2 | 16 | 0000 … FFFF | 000000 … 177777 | 0 … 65535 | -32768 … 32767 |
4 | 32 | 00000000 … FFFFFFFF | 00000000000 … 37777777777 | 0 … 4294967295 | -2147483648 … 2147483647 |
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG. IHDR| 00000010 00 00 00 87 00 00 00 a0 08 03 00 00 00 11 90 8f |. | 00000020 b6 00 00 00 04 67 41 4d 41 00 00 d6 d8 d4 4f 58 |. gAMA. OX| 00000030 32 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 |2. tEXtSoftwar| 00000040 65 00 41 64 6f 62 65 20 49 6d 61 67 65 52 65 61 |e.Adobe ImageRea| 00000050 64 79 71 c9 65 3c 00 00 03 00 50 4c 54 45 22 22 |dyq.e>>:99. 55| 00000090 35 51 50 50 37 37 37 11 11 11 25 25 25 0d 0d 0d |5QPP777. %%%. | 000000a0 27 27 27 1a 1a 1a 38 38 38 2a 2a 2a 08 08 08 20 |'''. 888***. | 000000b0 20 20 17 17 17 2e 2e 2e 13 13 13 bb bb bb 88 88 | . |
Инструменты
Для визуализации
- debug (в Microsoft Windows, частично)
- hexdump (в GNU/Linux и т. п.)
Почему форматы файлов Microsoft Office такие сложные?
На прошлой неделе Microsoft опубликовала спецификации форматов бинарных файлов для Office. Эти форматы выглядят безумно. Формат файла Excel 97-2003 представляет собой 349-страничный файл PDF. И это ещё не всё! В документе содержится такой комментарий:
Каждый лист [workbook] в Excel хранится в составном файле.
Видите ли, файлы Excel 97-2003 – это составные документы OLE, которые в свою очередь представляют собой некое подобие файловой системы в одном файле. Чтобы в этом разобраться, нужно прочитать 9 страниц документации. А сами спецификации больше похоже на структуры данных в С, чем на то, что мы привыкли называть спецификациями. Это иерархическая система файлов.
Если вы подумали, что почитаете эти форматы и за выходные набросаете утилитку для экспорта вордовских документов в свой блог, или создающую экселевские таблички на основе ваших персональных финансовых данных, то сложность и длина этих спецификаций должны были отбить у вас всю охоту. Нормальный программист решит, что формат бинарников из Office:
- сделан запутанным специально
- придуман каким-то страдающим от старческого маразма представителем кибернетической расы боргов
- создан безумно плохими программистами
- не может быть правильно создан или прочитан
Первое, что нужно понять – цели у разработчиков форматов бинарников кардинально отличались от целей разработчиков, допустим, HTML.
Они должны были очень быстро работать на очень старых компьютерах. Во времена первых версий Excel для Windows 1 мегабайт памяти был не редкостью, а работать достаточно комфортно программа должна была на процессорах 80386 с частотой 20 МГц. Множество оптимизаций сделано для ускорения открытия и сохранения файлов:
- Это форматы бинарных файлов, поэтому загрузка записи обычно означает копирование последовательности байтов с диска в память, в которой появляется структура данных С. Не происходит никакого разбора или лексического анализа данных, так как это в разы медленнее простого копирования.
- Формат файлов запутан в нужных местах для ускорения типичных операций. К примеру, у Excel 95 и 97 была функция «простого сохранения», которая использовалась в качестве ускоренного варианта документа OLE, полная версия которого была не слишком быстрой для повсеместного использования. У Word было нечто подобное под названием «быстрое сохранение». Для быстрого сохранения длинных документов 14 раз из 15 все изменения просто добавлялись в конец файла, а весь файл не перезаписывался с нуля. Для жёстких дисков того времени это означало, что можно было успеть сохранить документ, допустим, за 1 секунду вместо 30. Также это означало, что удалённые части документа всё ещё хранились в файле – а людям, как оказалось, это не было нужно.
У Office была поддержка составных документов, к примеру, можно было включить электронную таблицу в файл Word. Идеальный парсер Word должен был суметь сделать что-то умное с включённой таблицей.
Они не разрабатывались для использования в других приложениях. Довольно разумное на тот момент предположение заключалось в том, что формат Word будет писать и читать только программа Word. Поэтому когда программист из команды разработчиков Word принимал решение о смене формата файла, его волновали лишь а) скорость работы и б) минимальное количество строк в коде Word. Идеи вещей типа SGML и HTML, заменяемых, открытых и стандартизированных форматов, не были популярными, пока интернет не сделал такие вещи практичными. Этот момент пришёл через 10 лет после разработки форматов файлов Office. Всегда предполагалось использование программ для экспорта и импорта. У Word есть поддержка формата для простого обмена документами по имени RTF, существовавшего почти с самого начала.
Им нужно было отразить всю сложность приложений. Каждую галочку, каждую возможность форматирования и каждую функцию Microsoft Office необходимо было хранить в файлах. Поэтому для создания идеального клона Word, читающего его файлы, нужно было реализовать все его функции. Если вы создаёте программу для работы с текстом – конкурента Word, которая должна уметь загружать его файлы, у вас может занять немного времени сама загрузка указанных в файле опций. Но реальное отображение их всех на странице – это задача более сложная. А если её не решить, то ваши клиенты откроют вордовский файл в вашем клоне, и всё форматирование может поломаться.
Им нужно было отражать историю развития программ. Множество сложных вещей в форматах – это старые, сложные, ненужные и редко используемые функции. Они присутствуют там лишь для обратной совместимости и потому, что для разработчиков ничего не стоит оставить код в покое. Но чтобы тщательно выполнить работу разборки или записи этих файлов, вам придётся повторить всю эту работу, что была проделана в Microsoft за 15 лет. В текущие версии Word и Excel вложены тысячи человеко-часов работы, и для клонирования этих программ вам придётся вложить свои тысячи человеко-часов. Формат файла – это просто краткое обобщение всех поддерживаемых приложением функций.
Просто для примера разберём одну возможность подробнее. Лист Excel – это набор разных записей BIFF. Рассмотрим самую первую запись в спецификации – это запись под именем 1904.
В спецификации об этой записи написано весьма туманно. Просто написано, что «запись 1904 показывает, используется ли система дат 1904». Классический пример бесполезной спецификации. Если бы вы были разработчиком, и наткнулись бы на такое «объяснение», вы бы весьма оправданно пришли к заключению, что Microsoft что-то скрывает. Такое описание недостаточно само по себе, вам нужно искать дополнительную информацию. Я поясню: существует два типа листов Excel. В одних даты начинаются с 1/1/1900 (в них же ошибка високосного года специально создана для совместимости с форматом 1-2-3), в других – с 1/1/1904. Excel поддерживает оба варианта – поскольку первая его версия, для Mac, использовала второй вариант, который был системным, а Excel для Windows должен был иметь возможность импортировать файлы 1-2-3, использовавшие даты с 1/1/1900. Уже на этом месте можно расплакаться.
Оба типа файлов, 1900 и 1904, встречаются в изобилии в дикой природе, в зависимости от того, пришли они с Mac или Windows. Автоматическая конвертация дат может привести к ошибкам, поэтому Excel сам тип файла не меняет. Для разборки файлов Excel приходится работать с обоими. А это значит, что вам не просто нужно загрузить этот бит из файла, но ещё и переписать весь код разбора и показа дат, чтобы обрабатывать оба варианта. Это работа на несколько дней.
Работая над клоном Excel вы встретите множество таких скрытых деталей по работе с датами. Когда Excel преобразовывает числа в даты? Как работает форматирование? Почему 1/31 интерпретируется как 31 января текущего года, а 1/50 – как первое января 1950? Все эти детали нельзя описать без того, чтобы получившееся описание не сравнялось по объёму с исходниками Excel.
И это только одна из сотен BIFF-записей, и одна из простейших. Большинство из них настолько сложные, что могут заставить взрослого программиста рыдать.
Единственное возможное решение будет следующим. Конечно, Microsoft оказала большую услугу, опубликовав форматы файлов, но импортировать их или сохранять в них от этого легче не будет. Это безумно сложные приложения, и вы не можете просто реализовать 20% самых популярных функций и рассчитывать, что 80% остальных людей будут счастливы. Спецификации бинарников в лучшем случае сохранят вам пару минут при реверс-инжиниринге сложной системы.
Но я обещал рассказать, что с этим делать. Почти всем популярным приложениям не нужно заниматься чтением и записью бинарников от Office. Есть две альтернативы: дать Office работать самому, или использовать более простые форматы файлов.
Пусть Office работает сам. У Word и Excel есть весьма полные модели объектов, доступные через COM Automation, благодаря чему в программе можно сделать всё. Во многих случаях лучше повторно использовать код из Office вместо попыток написать его заново. Примеры:
- У вас есть веб-приложение, которому нужно вывести файлы Word в формате PDF. Я бы сделал это так: несколько строк на Word VBA загружают файл и сохраняют его в PDF через встроенный в Word 2007 механизм. Этот код можно вызывать напрямую, даже из ASP или ASP.NET, работающего под IIS. Первый запуск Word займёт несколько секунд. В последствии Word будет находиться в памяти под управлением COM-системы. Для обычных веб-приложений такая система работает довольно быстро.
- Та же задача под Linux. Купите один сервер Windows 2003, установите на него лицензионный Word, и настройте простой веб-сервис. Работы на полдня, с применением C# и ASP.NET
- Та же задача но с возможностью масштабирования. Настройте балансировку нагрузки перед любым необходимым количеством коробок из второго шага. Никакого программирования не потребуется.
- Открытие листа Excel, сохранение некоторых данных в ячейках, подсчёт и выдача результата.
- Использования Excel для создания графиков в формате GIF
- Вытаскивание любой информации из файла Excel без разбора форматов файлов
- Преобразование файла Excel в CSV (другой подход – использовать драйверы Excel ODBC и забирать данные через SQL-запросы)
- Редактирование документов Word
- Заполнение форм в Word
- Преобразование файлов между разными форматами, которые поддерживает Office (существуют возможности импортирования десятков форматов текстовых процессоров и электронных таблиц).
Используйте форматы попроще. Если вам просто нужно программно создать документы для Office, почти всегда есть формат получше, который затем можно свободно открыть в Word или Excel.
- Для создания табличных данных и использования их в Excel используйте CSV.
- CSV не поддерживает вычисления, так что для их использования возьмите формат WK1, доставшийся от Lotus 1-2-3. Он гораздо проще, чем у Excel, и открывается им на раз.
- Если вам ну очень надо создавать нативные файлы Excel, возьмите очень старую его версию. 3.0 – хороший выбор, там не было составных документов. Сохраните в Excel 3.0 минимальный файл только с теми функциями, которые вам необходимы, и используйте его как пример минимальной BIFF-записи.
- Для документов Word используйте HTML
- Если вам очень надо создать файл для Word с модным форматированием, проще всего создать RTF. Всё, что умеет Word, можно написать в RTF, но этот формат текстовый, так что в нём что-то можно поменять руками и он будет работать. Вы можете создать красиво отформатированный файл в Word, сохранить в RTF и использовать простую замену текста.
Форматы графических файлов
Форматы графических файлов. Растровые и векторные форматы.
Информация в разделе по материалам ВикипедиЯ
Формат TIFF
TIFF (англ. Tagged Image File Format) — формат хранения растровых графических изображений. TIFF стал популярным форматом для хранения изображений с большой глубиной цвета. Он используется при сканировании, отправке факсов, распознавании текста, в полиграфии, широко поддерживается графическими приложениями.
Структура формата гибкая и позволяет сохранять изображения в режиме цветов с палитрой, а также в различных цветовых пространствах:
- Бинарном (двуцветном, иногда называемом чёрно-белым)
- Полутоновом
- С индексированной палитрой
- RGB
- CMYK
- YCbCr
- CIE Lab
Поддерживаются режимы 8, 16, 32 и 64 бит на канал.
Сжатие. Имеется возможность сохранять изображение в файле формата TIFF со сжатием и без сжатия. Степени сжатия зависят от особенностей самого сохраняемого изображения, а также от используемого алгоритма. Формат TIFF позволяет использовать следующие алгоритмы сжатия:
- PackBits (RLE)
- Lempel-Ziv-Welch (LZW)
- LZ77
- ZIP
- JBIG
- JPEG
- CCITT Group 3, CCITT Group 4
Алгоритмы CCITT Group 3, CCITT Group 4 первоначально были разработаны для сетей факсимильной связи (поэтому иногда их называют Fax 3, Fax 4). В настоящий момент они также используются в полиграфии, системах цифровой картографии и географических информационных системах.
TIFF является теговым форматом и в нём используются основные, расширенные и специальные теги:
Основные теги составляют ядро формата и должны поддерживаться всеми продуктами, реализующими формат TIFF в соответствии со спецификацией. Поддержка расширенных тегов, в отличие от основных необязательна.
Формат JPEG
JPEG ( англ. Joint Photographic Experts Group, по названию организации-разработчика) — один из популярных графических форматов, применяемый для хранения фотоизображений. Файлы, содержащие данные JPEG, обычно имеют расширения .jpeg, .jfif, .jpg, .JPG, или .JPE. Алгоритм JPEG позволяет сжимать изображение как с потерями, так и без потерь.
Алгоритм JPEG в наибольшей степени пригоден для сжатия фотографий и картин, содержащих реалистичные сцены с плавными переходами яркости и цвета. Наибольшее распространение JPEG получил в цифровой фотографии и для хранения и передачи изображений с использованием сети Интернет.
С другой стороны, JPEG малопригоден для сжатия чертежей, текстовой и знаковой графики, где резкий контраст между соседними пикселами приводит к появлению заметных артефактов. Такие изображения целесообразно сохранять в форматах без потерь, таких как TIFF, GIF или PNG.
JPEG (как и другие методы искажающего сжатия) не подходит для сжатия изображений при многоступенчатой обработке, так как искажения в изображения будут вноситься каждый раз при сохранении промежуточных результатов обработки. JPEG не должен использоваться и в тех случаях, когда недопустимы даже минимальные потери, например, при сжатии астрономических или медицинских изображений.
К недостаткам сжатия по стандарту JPEG следует отнести появление на восстановленных изображениях при высоких степенях сжатия характерных артефактов: изображение рассыпается на блоки размером 8×8 пикселов (этот эффект особенно заметен на областях изображения с плавными изменениями яркости), в областях с высокой пространственной частотой (например, на контрастных контурах и границах изображения) возникают артефакты в виде шумовых ореолов.
Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за достаточно высокой степени сжатия, поддержке сжатия полноцветных изображений и относительно невысокой вычислительной сложности.
Формат PDF
PDF (англ. Portable Document Format) — кроссплатформенный формат электронных документов, созданный фирмой Adobe Systems с использованием ряда возможностей языка PostScript. Чаще всего PDF-файл является комбинацией текста с растровой и векторной графикой, реже — текста с формами, JavaScript’ом, 3D-графикой и другими типами элементов. В первую очередь предназначен для представления в электронном виде полиграфической продукции, — значительное количество современного профессионального печатного оборудования может обрабатывать PDF непосредственно. Для просмотра можно использовать официальную бесплатную программу Adobe Reader, а также программы сторонних разработчиков. Традиционным способом создания PDF-документов является виртуальный принтер, то есть документ как таковой готовится в своей специализированной программе — графической программе или текстовом редакторе, САПР и т. д., а затем экспортируется в формат PDF для распространения в электронном виде, передачи в типографию и т. п. PDF.
Формат PDF позволяет внедрять необходимые шрифты (построчный текст), векторные и растровые изображения, формы и мультимедиа-вставки. Поддерживает RGB, CMYK, Grayscale, Lab, Duotone, Bitmap, несколько типов сжатия растровой информации. Имеет собственные технические форматы для полиграфии: PDF/X-1, PDF/X-3. Включает механизм электронных подписей для защиты и проверки подлинности документов. В этом формате распространяется большое количество сопутствующей документации.
Формат CALS
Растровый формат CALS (англ. Computer Aided Acquisition and Logistics Support) стардарт, разработанный подразделением министерства обороны США для стандартизации обмена графическими данными в электронном виде, особеннв в областях технической графики, CAD/CAM и приложений обработки изображений.
CALS — хорошо документированный, хотя и громоздкий, формат, в котором сделана попытка охватить многие вещи. Если вы не знакомы с документами правительства США, вам, вомзожно, покажется работа с данным форматом весьма сложной. Растровый формат CALS является необходимым в большинстве приложений, обрабатывающих документы правительства США. Поскольку все данные имеют байтовую организацию проблем типа «с какого конца разбить яйцо тупого или острого » никогда не возникает.
Характеристики формата CALS
- Тип — Bitmap (битовая матрица)
- Цвет — монохром
- Сжатие — CCITT Group 4 или без сжатия
- Максимальный размер изображения — неограничен
- Несколько изображений в файле — да, только для Type II
- Платформы — все
Формат BMP
BMP (от англ. Bitmap Picture) — формат хранения растровых изображений, разработанный компанией Microsoft. С форматом BMP работает огромное количество программ, так как его поддержка интегрирована в операционные системы Windows и OS/2. Файлы формата BMP могут иметь расширения .bmp, .dib и .rle.
Глубина цвета в данном формате может быть 1, 2, 4, 8, 16, 24, 32, 48 бит на пиксель, но глубина 2 бита на пиксель официально не поддерживается. При этом для глубины цвета меньше 16 бит используется палитра с полноцветными компонентами глубиной 24 бита. В формате BMP изображения могут храниться как есть или же с применением некоторых распространённых алгоритмов сжатия. В частности, формат BMP поддерживает RLE-сжатие без потери качества, а современные операционные системы и программное обеспечение позволяют использовать JPEG и PNG.
Формат PCX
PCX (PCExchange) — стандарт представления графической информации, не столь популярный аналог BMP, хотя поддерживается специфическими графическими редакторами, такими как Adobe Photoshop, Corel Draw, GIMP и др. В настоящее время практически вытеснен форматами, которые поддерживают лучшее сжатие: GIF, JPEG и PNG.
Тип формата — растровый. Большинство файлов такого типа использует стандартную палитру цветов, но формат был расширен из расчета на хранение 24-битных изображений. PCX — аппаратно-зависимый формат. Предназначается для хранения информации в файле в таком же виде, как и в видеоплате. Для совместимости со старыми программами необходима поддержка EGA-режима видеоконтроллером. Алгоритм такого сжатия очень быстрый и занимает небольшой объём памяти, однако не очень эффективен, непрактичен для сжатия фотографий и более детальной компьютерной графики. Используется сжатие без потерь. При сохранении изображения подряд идущие пиксели одинакового цвета объединяются и вместо указания цвета для каждого пикселя указывается цвет группы пикселей и их количество. Такой алгоритм хорошо сжимает изображения, в которых присутствуют области одного цвета.
Достоинства формата
- возможность создания ограниченной палитры цветов (например, 16 или 256 цветов);
- поддерживается большим количеством приложений.
Недостатки формата
- не поддерживает цветовые системы, отличные от RGB;
- многочисленные варианты, особенно при работе с цветами, могут делать работу с файлом невозможным;
- неудобная схема сжатия в действительности может увеличивать размеры некоторых файлов.
Формат PNG
PNG (англ. portable network graphics) — растровый формат хранения графической информации, использующий сжатие без потерь.
Область применения
Формат PNG спроектирован для замены устаревшего и более простого формата GIF, а также, в некоторой степени, для замены значительно более сложного формата TIFF. Формат PNG позиционируется прежде всего для использования в Интернете и редактирования графики.
PNG поддерживает три основных типа растровых изображений:
- Полутоновое изображение (с глубиной цвета 16 бит)
- Цветное индексированное изображение (палитра 8 бит для цвета глубиной 24 бит)
- Полноцветное изображение (с глубиной цвета 48 бит)
Формат PNG хранит графическую информацию в сжатом виде. Причём это сжатие производится без потерь, в отличие, например, от JPEG с потерями. Формат PNG обладает более высокой степенью сжатия для файлов с большим количеством цветов, чем GIF, но разница составляет около 5-25 %, что недостаточно для абсолютного преобладания формата, так как небольшие 2-16-цветные файлы формат GIF сжимает с не меньшей эффективностью.
PNG является хорошим форматом для редактирования изображений, даже для хранения промежуточных стадий редактирования, так как восстановление и пересохранение изображения проходят без потерь в качестве.
Анимация
Существует одна особенность GIF, которая в PNG не реализована — поддержка множественного изображения, особенно анимации; PNG изначально был предназначен лишь для хранения одного изображения в одном файле.
Формат Sun Raster
Формат изображений Sun Raster это родной растровый формат платформ Sun Microsystems использующих операционную систему SunOS. Этот формат поддерживает черно-белые, полутоновые и цветные растровые данные произвольной глубины цвета. Поддерживается также использование цветовых карт и простой компрессии данных Run-Length. Обычно большинство изображений в операционной системе SunOS представлены в формате Sun Raster. Также этот формат поддерживается большинством программ работы с изображениями под UNIX.
Характеристики формата Sun Raster
- Тип — bitmap (битовая матрица)
- Цвета — различные
- Сжатие — RLE
- Несколько изображений в файле — не поддерживается
- Платформа — SunOS
- Приложения — многие приложения под UNIX
Информация в разделе по материалам ВикипедиЯ