Бывают случаи, когда нужно как можно сильнее сжать файлы архиватором - скажем, для загрузки на хостинг. Да и вообще, зачем сжимать слабо, если можно сжать сильно?
Как упаковывать файлы с плотностью ~чёрной дыры
Ну, упаковать файлы в архив можно даже стандартными средствами Windows (Сжатые ZIP-папки), но лучше всё-таки специализированные архиваторы. Их существует много, они создают разные форматы архива и обладают различной степенью сжатия. Архиваторы используют разные алгоритмы сжатия, которые в общем подразделяются на два типа: симметричные и асимметричные. Симметричный алгоритм – такой, в котором скорость упаковки и распаковки файлов одинакова (и не слишком велика). В асимметричном алгоритме распаковка происходит быстрее упаковки. Какие же бывают архиваторы
1. WinZip – один из распространённых архиваторов. Платный. Упаковывает файлы в архив формата ZIP, распаковывать способен ZIP, RAR, ACE, CAB и многие другие. При упаковке можно выбрать степень сжатия (от «без сжатия» до самой высокой), а также создать самораспаковывающийся архив. В плане степени сжатия архиватор неважный, соперничать может только со стандартными ZIP-папками Windows.
2. WinRAR – пожалуй, самый популярный архиватор на сегодняшний день (хоть и платный), созданный программистом Евгением Рошалом. Работает по асимметричному алгоритму сжатия, создаёт архивы формата RAR и ZIP, умеет создавать и самораспаковывающиеся. Распаковывает большинство из стандартных форматов. Формат RAR обеспечивает довольно неплохое сжатие, но он способен держать планку только при выборе высшей степени сжатия и отметки галочкой Create solid archive. Во всех остальных случаях проигрывает признанным «монстрам» мира архиваторов.
3. 7-Zip – бесплатный архиватор, разработанный Игорем Павловым. Использует резко асимметричный алгоритм сжатия (скорость распаковки значительно превосходит скорость запаковки). Стандартный формат архива 7z (также может создавать архивы ZIP, TAR, BZ2, распаковывает практически все стандартные), способен создавать самораспаковывающиеся архивы. Он значительно более функционален, чем WinRAR, и лучше сжимает (при использовании «родного» алгоритма LZMA). В новых версиях (начиная с 9.07 beta) введён также ещё один алгоритм сжатия – LZMA2, но он поддерживается только 7-Zip и только новыми версиями – никаким другим архиватором вы такой архив не откроете. Зато этот алгоритм обеспечивает самое сильное сжатие, достижимое с 7-Zip. Очень перспективный архиватор, обещающий превзойти UHARC.
4. UHARC – бесплатный консольный архиватор за авторством Уве Герклотца. Разработка остановлена на бета-версии 0.6, для которой, впрочем, написана графическая оболочка. В отличие от вышеназванных, UHARC обеспечивает симметричное сжатие, т.е. скорость распаковки довольно низкая. Формат создаваемого архива – UHA, ни одним из стандартных архиваторов такой не открывается, но возможно преобразование в самораспаковывающийся. Это и есть один из монстров архиваторного мира, ибо способен уминать файлы, как ни один другой (в большинстве случаев). Соперничать на равных с ним может только 7-Zip при использовании алгоритмов LZMA\LZMA2. Главная достопримечательность – метод мультимедийной компрессии, благодаря которому можно наиболее плотно упаковывать трудносжимаемые графические и звуковые файлы.
Есть и другие архиваторы, менее известные.
Какой архиватор лучше? А на этот вопрос так однозначно не ответишь, поскольку разные типы файлов по-разному сжимаются, и разные алгоритмы сжатия на них действуют тоже по-разному. С одним файлом лучше всего справится UHARC, а с другим – WinRAR, да ещё и при сжатии в ZIP. Поэтому я владею сразу тремя – WinRAR, 7-Zip, UHARC (тем более что места на жёстком диске они не пролежат). WinRAR – удобный интерфейс (обычно только для распаковки используется), 7-Zip – основной (свои карты и моды я обычно им запаковываю), UHARC на графической оболочке WinUHA – для особых случаев. Но степень сжатия зависит не только от архиватора, но и от его настроек, и от типа файла. Зависимость от типа файла наиболее показательна: форматы JPG, MP3, MP4, MOV и т.д. сжимаются очень плохо даже хорошим архиватором. У всех этих файлов есть общая черта – они уже были сжаты специальным алгоритмом преобразования, встроенным в сам файл при сохранении в данном формате. GIF или JPG-картинка сжаты алгоритмами преобразования изображения, MP4 – видеокодеком… Поэтому следует такой вывод: файлы, уже сжатые при сохранении, сжиматься архиватором будут плохо. Но всё же и в них есть некоторый процент избыточной информации, который архиваторы и используют. А пример ХОРОШЕГО сжатия я продемонстрирую сейчас в целях эксперимента.
1. Открываем самый обычный Paint и создаём в нём рисунок любого размера. Я выбрала 512х512 (люблю степени от 2). Заливаем его каким-нибудь цветом и сохраняем в .bmp. У меня получился вот такой файл: www.brickshelf.com/gallery/Roodaka8761/pictures... Размер его 768 КБ.
2. Добавляем его в 7-Zip и указываем такие параметры архивации:
3. Жмём кнопку. На выходе получаем архив весом в 345 байт. Неплохо, не правда ли?
Запомните параметры: именно такими обеспечивается максимальная степень сжатия. В общем – самый большой из доступных размер словаря (здесь это 64 МБ), самый большой размер слова (если доступна настройка), размер блока – непрерывный (в случае WinRAR установить галочку на Create solid archive).
А вот и ещё один эксперимент, с тем же bmp-файлом в 768 КБ и архиватором WinUHA. Точнее, сам WinUHA – лишь графическая оболочка, ядром служит знаменитый UHARC. Создаваемый и открываемый формат архива - .uha, ни одним из стандартных архиваторов такой не открывается, но может быть преобразован в самораспаковывающийся. Настройки такие:
Размер архива получился 150 байт. Этого достаточно для чёрной дыры?
Впрочем, с обычными файлами такой плотности ожидать не стоит. Скажем, моя DoW-карта Ледяных пещер (файл карты+текстура фона+миникарта+иконка) весит 2,94 МБ, сжать её возможно до 741 КБ с помощью того же WinUHA или до 766 КБ с помощью 7-Zip. Иногда 7-Zip справляется лучше, но в целом эти 2 архиватора я считаю наилучшим выбором.
Важное замечание: обратите внимание на типы сжатия в настройках WinUHA. С большинством файлов лучшие результаты достигаются с ALZ-3, но некоторые лучше сжимаются с использованием PPM.
Ссылки на скачивание:
7-Zip: www.7-zip.org
WinUHA: www.klaimsoft.com/winuha/download.php
Почти экстремальное архивирование
Бывают случаи, когда нужно как можно сильнее сжать файлы архиватором - скажем, для загрузки на хостинг. Да и вообще, зачем сжимать слабо, если можно сжать сильно?
Как упаковывать файлы с плотностью ~чёрной дыры
Как упаковывать файлы с плотностью ~чёрной дыры