GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - schnaader/precomp-cpp: Precomp, C++ version - further compress already compressed files

BranchesTags
Open more actions menu

Latest commit

 

History

389 Commits
389 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
contrib
contrib
 
 
vs2015/Precomp
vs2015/Precomp
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
CMakeLists.txt
CMakeLists.txt
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
appveyor.yml
appveyor.yml
 
 
changes_before_git.txt
changes_before_git.txt
 
 
dlltest.cpp
dlltest.cpp
 
 
precomp.cpp
precomp.cpp
 
 
precomp.h
precomp.h
 
 
precomp_dll.h
precomp_dll.h
 
 
readme.txt
readme.txt
 
 

Repository files navigation

Precomp

Join the chat at https://gitter.im/schnaader/precomp-cpp Build Status Build status

Packaging status

What is Precomp?

Precomp is a command line precompressor that can be used to further compress files that are already compressed. It improves compression on some file-/streamtypes - works on files and streams that are compressed with zLib or the Deflate compression method (like PDF, PNG, ZIP and many more), bZip2, GIF, JPG and MP3. Precomp tries to decompress the streams, and if they can be decompressed and "re-"compressed so that they are bit-to-bit-identical with the original stream, the decompressed stream can be used instead of the compressed one.

The result of Precomp is either a smaller, LZMA2 compressed file with extension .pcf (PCF = PreCompressedFile) or, when using -cn, a file containing decompressed data from the original file together with reconstruction data. In this case, the file is larger than the original file, but can be compressed with any compression algorithm stronger than Deflate to get better compression.

Since version 0.4.3, Precomp is available for Linux/*nix/macOS, too. The different versions are completely compatible, PCF files are exchangeable between Windows/Linux/*nix/macOS systems.

Usage example

Command Comment
wget http://mattmahoney.net/dc/silesia.zip
(or download from here)
We want to compress this file (the Silesia compression corpus).
Size: 67,633,896 bytes (100,0%)
7z a -mx=9 silesia.7z silesia.zip Compressing with 7-Zip LZMA2, setting "Ultra".
Size: 67,405,052 bytes (99,7%)
precomp silesia.zip Compressing with Precomp results in silesia.pcf.
Size: 47,122,779 bytes (69,7%)
precomp -r -osilesia.zip_ silesia.pcf This restores the original file to a new file named silesia.zip_.
Without the -o parameter, Precomp would decompress to silesia.zip.
diff -s silesia.zip silesia.zip_ Compares the original file to the result file, they're identical

How can I contribute?

  • You can have a look at the Issue list
    • If you are looking for easy issues that don't require deeper understanding of the whole project, look for issues with the low hanging fruits tag
  • You can build the project or download the binaries (see below), run it on your system and report bugs or make enhancement proposals.

Releases/Binaries

Official GitHub releases for both Windows and Linux.

Alternative binary download of the latest official release for both Windows and Linux.

Binaries for older version can be found at this Google Drive folder.

Contact

Christian Schneider

[email protected]

http://schnaader.info

Donations

Donate

To donate, you can either use the donate button here, the one at the top of the page ("Sponsor") or the one on my homepage. You can also send bitcoins to

1KvQxn6KHp4tv92Z5Fy8dTPLz4XdosQpbz

Credits

Thanks for support, help and comments:

  • Stephan Busch (Squeeze Chart Author, http://www.squeezechart.com)
  • Werner Bergmans (Maximum Compression Benchmark Author, http://www.maximumcompression.com)
  • Matthias Stirner (packJPG, packMP3, https://github.com/packjpg, http://www.matthiasstirner.com)
  • Mark Adler (http://www.zlib.net)
  • Matt Mahoney (http://www.mattmahoney.net)
  • Malcolm Taylor (http://www.msoftware.co.nz)
  • Simon Berger (helped to fix many bugs)
  • The whole encode.su forum (https://encode.su/)

Legal stuff

  • brunsli (https://github.com/google/brunsli) by Google LLC is used for compression/decompression of JPG files.
  • brotli (https://github.com/google/brotli) by the Brotli Authors is used for compression/decompression of JPG metadata.
  • packJPG v2.5k (https://github.com/packjpg/packJPG) by Matthias Stirner is used for compression/decompression of JPG files.
  • packMP3 v1.0g by Matthias Stirner is used for compression/decompression of MP3 files.
  • bZip2 1.0.6 (http://www.bzip.org) by Julian Seward is used for compression/decompression of bZip2 streams.
  • zLib 1.2.11 (http://www.zlib.net) by Jean-loup Gailly and Mark Adler is used for compression/decompression of zLib streams.
  • GifLib 4.1.4 (http://sourceforge.net/projects/giflib) is used for compression/decompression of GIF files. The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
  • liblzma from XZ Utils 5.2.3 (http://tukaani.org/xz) is used for compression/decompresson of lzma streams.
  • preflate v0.3.5 (https://github.com/deus-libri/preflate) by Dirk Steinke is used to create and use reconstruction information of deflate streams

License

Copyright 2006-2021 Christian Schneider

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

Precomp, C++ version - further compress already compressed files

schnaader.info/precomp.php

Topics

command-line-toolcompressiongifjpglosslessmp3pdfzlib

Resources

Readme
Apache-2.0 license
Activity

Stars

468 stars

Watchers

24 watching

Forks

59 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.