Утилита PreComp |
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
Что такое Precomp?
Precomp - это прекомпрессор с интерфейсом командной строки. Вы можете использовать его для достижения лучшего сжатия некоторых типов файлов (работает с файлами, сжатыми методами ZLib или Deflate, и GIF-файлами). Precomp пытается произвести распаковку потоков этих файлов, и, если они декомпрессированые при последующей перекомпрессии идентичны бит-в-бит оригинальному потоку, то перекомпрессия не производится.
В результате получается .pcf-файл (PCF = PreCompressedFile), который содержит больше декомпрессированных данных, чем оригинальный файл. Обратите внимание, что этот файл больше оригинального, но, если сжать его методом сжатия сильнее, чем Deflate, он сожмётся лучше, чем оригинал (или использовать lprepaq для прекомпрессии и сжатия за один шаг).
Что такое Precomp Comfort?
Precomp Comfort является разновидностью Precomp. Он поддерживает перетаскивание отдельных файлов и использование ini-файл для параметров.
Он добавлен в скачиваемый zip-архив. Precomp.exe - оригинальная версия, Precomf.exe - Comfort-версия.
Что такое lprepaq?
lprepaq сочетает в себе lpaq6 Мэтта Махоуни и Precomp. Вначале он прекомпрессирует входной файл, затем сжимает, используя сильное сжатие методом PAQ. lprepaq - полноценный компрессор/декомпрессор, его вполне можно использовать для сжатия файлов.
Что такое prepaq?
prepaq v2 (он же paq8o8pre v2) от Яна Ондруса сочетает в себе paq8o8 Мэтта Махоуни и Precomp. Вначале он прекомпрессирует входной файл, затем сжимает, используя сильное сжатие методом PAQ. Так же, как и lprepaq, prepaq полноценный компрессор/декомпрессор, но он гораздо медленнее lprepaq'а и сжимает сильнее.
Типы файлов
Вот список типов файлов, лучшее сжатие которых может быть достигнуто с помощью Precomp, и как это можно проверить.
Обратите внимание, что этот список не является полным, и что другие типы файлов также могут содержать Deflate или ZLib потоки, но вы должны использовать параметр медленного режима (-slow) для них.
В Adobe PDF-файлах часто используется метод zLib для сжатия их содержимого.
Проверка: "FlateDecode" содержится в файле.
JPG
Precomp использует packJPG Маттиаса Штирнера для беспотерьного сжатия JPG-изображений.
MJPEG
MJPEG - это видеоформат, который содержит JPG-изображения без таблиц Хаффмана. Precomp вставляет их так, чтобы packJPG мог сжимать изображения.
ZIP/JAR
В большинстве ZIP-файлов используется для сжатия Deflate. JAR-файлы в основном являются ZIP-файлами с добавленным манифестом для работы с Java.
PNG
В PNG используется Deflate для сжатия фильтрованных данных изображения.
GIF
Формат GIF использует LZW для сжатия данных изображения.
GZ
В GZip файлах используется для сжатия Deflate.
BZ2
bzip2 - это формат часто используемый в среде Linux.
SWF
В Macromedia's Shockwave Flash файлах может использоваться сжатие Zlib, начиная с версии 6.
Проверка: Первые три байта файла - CWS (вместо FWS для несжатых файлов).
MIME Base64
Это кодирование используется для присоединения бинарных файлов в электронной почте.
SVGZ
Эти файлы содержат SVG-файлы, сжатые GZip.
ODT
Файлы документов OpenOffice состоят из сжатых zip-алгоритмом XML-данных.
SIS (только медленный режим)
Эти файлы содержат информацию об инсталляции программного обеспечения на Symbian OS для мобильных телефонов. В них используется сжатие Zlib.
3DM (только медленный режим)
Это формат файлов 3D-геометрии, использующийся в Rhino3D и содержащий ZLib-потоки.
zeno (только медленный режим)
Zeno - это формат файлов, использующийся немецкой Wikipedia DVD.
Скачать.
Precomp (и Precomp Comfort) v0.4: precomp.zip (392 KB)
lprepaq v1.3 (включая исходники): lprepaq.zip (259 KB)
Примечание: Возможно, вам будет нужен msvcr80.dll. Скачать можно здесь.
prepaq v2 (он же paq8o8pre v2, включая исходники): paq8o8pre.zip (311 KB)
Старые версии
Precomp не имеет обратной совместимости. Если вы хотите рекомпрессировать PCF-файл, созданный другой версией Precomp, вы можете скачать её здесь:
Precomp v0.3 Precomp v0.31 Precomp v0.32 Precomp v0.33 Precomp v0.34
Precomp v0.35 Precomp v0.36 Precomp v0.37 Precomp v0.38
Как использовать
Самый простой способ (lprepaq):
Чтобы сжать файл - "lprepaq 5 входной_файл выходной_файл"
Чтобы распаковать файл - "lprepaq d входной_файл выходной_файл"
Значение 5 использует 99 Мб памяти. Диапазон значений от 0 (6 Мб) до 9 (1539 Мб).
В общем, вариант N использует 3 + 3*2N Мб.
Легкий способ (Precomp Comfort):
Перетащите файл на precomf.exe для предварительного сжатия в .pcf-файл с таким же названием.
Чтобы получить обратно оригинальный файл, сделайте то же самое с .pcf-файлом.
Использование командной строки: (Precomp)
Для предварительного сжатия в .pcf-файл с таким же названием - "precomp входной_файл"
Чтобы получить оригинальный файл - "precomp -r pcf_файл" (параметр -d делает то же самое).
Коды ошибок
Для пакетной работы будет полезным видеть коды ошибок, которые будет возвращать программа. Описание кодов ошибок:
0 Нет ошибок
1 Различные ошибки (в том числе ошибки доступа к файлу)
2 Невозможно декомпрессировать (PCF вывод будет тем же, за исключением заголовка PCF)
3 Диск переполнен
4 Временный файл не найден
5 Ошибка параметра: Пропущенная позиция слишком большая
6 Ошибка параметра: Размер одинаковых байт слишком большой
7 Ошибка параметра: Уровень рекурсии слишком большей
8 Ошибка параметра: Уровень рекурсии установлен более одного раза
9 Ошибка параметра: Минимальный размер одинаковых байт установлен более одного раза
10 Ошибка параметра: Не используйте пробел после -o
11 Ошибка параметра: Более одного выходного файла
12 Ошибка параметра: Более одного входного файла
Дополнительные параметры: (Precomp / Precomp Comfort)
-o [имя_файла]:
Задает имя выходного файла. Для прекомпрессии - по умолчанию имя оригинального файла с расширением .pcf; для "декомпрессии" это имя оригинального файла. Если выходной файл уже существует, будет выведен вопрос, желаете ли вы перезаписать его. Тем не менее, вы можете указать другое имя выходного файла с этой опцией.
-c и -m: (Compression_Levels, Memory_Levels)
После прекомпрессии Precomp, указывает, как использовать эти параметры для ускорения прекомпрессии в следующий раз, если вы снова будете прекомпрессировать этот файл. Это настройки уровней сжатия и памяти, которые можно использовать для файла. Если вы используете эти параметры на другом файле, Precomp может пропустить некоторые сжатые части в нём.
-t: (Comfort: Compression_Types)
Включает и выключает обнаружение некоторых типов сжатия. Для использования в командной строке есть два варианта:
t+ разрешает определенные типы сжатия и запрещает остальные, в то время как t- отключает определенные типы и разрешает остальные.
Например, использование -t-j запрещает JPEG рекомпрессию и разрешает остальные типы сжатия; использование -t+pf разрешает только PDF и GIF рекомпрессию, запрещая всё остальное.
-l: (Comfort: Maximal_Recursion_Level)
Устанавливает максимальный уровень рекурсии. Несколько потоков могут содержать дополнительные потоки внутри себя, например, ZIP или MIME Base64 потоки. Данный параметр задает максимальную "глубину", где Precomp будет искать потоки. Установка этого параметра в 0 отключает рекурсии, по умолчанию - 10, что вполне достаточно для большинства типов файлов.
-f: (Comfort: Fast_Mode)
Быстрый режим для ускорения работы Precomp. При этом используется первый найденный метод сжатия для всех потоков, а не перебираются все из 81 комбинаций для точного определения. Это будет прекрасно работать с файлами, в которых используются лишь несколько методов сжатия, но приведёт к ухудшению компрессии файлов, в которых используется множество различных методов сжатия. Хорошо подходят PDF и ZIP/JAR/GZ файлы. Плохо подходят архивы, вмещающие много файлов.
Не в быстром режиме появляется сообщение, когда используется только один уровень комбинаций. Это значит, что в быстром режиме файл будет обрабатываться точно так-же, но быстрее.
-slow: (Comfort: Slow_Mode)
Медленный режим значительно замедляет работу Precomp. Идёт поиск необработанных заголовков zLib и распознавание многих форматов файлов, таких как SIS и SWF, или специальных форматов, используемых только одной программой. Однако, заголовок zLib содержит только 2 байта, и может возникнуть ситуация, когда обнаружится несколько "ложных" потоков, определяемых, как zLib-потоки, что приводит к замедлению работы.
Медленный режим можно комбинировать с быстром режимом, но может случиться, что ложное распознавание первого потока сделает невозможным правильное распознавание потоков следующих, поэтому комбинируйте режимы с осторожностью. Используйте этот режим, если у вас есть файлы, в которых сжатие Zlib используется, но не поддерживается (SIS, SWF, игровые ISO-образы...).
-brute: (Comfort: Brute_Mode)
Режим перебора очень сильно замедляет Precomp. В нем предполагается, что zLib потоки без заголовков могут быть где угодно. Это позволяет распознавать даже экзотические форматы, которые не содержат zLib заголовков, но занимает очень много времени (более минуты для файла размером около 10 Кб). Если у вас имеются данные, которые должны быть обработаны с этим режимом, лучше попробовать добавить zLib заголовки самостоятельно.
