mozjpeg (Mozilla JPEG Encoder Project)
mozjpeg is a fork of libjpeg-turbo from Mozilla Research. Its
goal is to reduce the size of JPEG files without reducing quality
or compatibility with the vast majority of the world's deployed
decoders. The idea is to reduce transfer times for JPEGs on the Web,
thus reducing page load times.
mozjpeg is not intended to be a general JPEG library replacement. It
makes tradeoffs that are intended to benefit Web use cases and
focuses solely on improving encoding. It is best used as part of a Web
encoding workflow.
In essence, libjpeg-turbo (as shipped with Slackware) is optimized
for speed of encoding/decoding, while mozjpeg is optimized for
encoding smaller file sizes (at the expense of speed). mozjpeg will
not interfere with Slackware's libjpeg-turbo package, as it installs
to /opt/mozjpeg/.
mozjpeg supports multiple versions of the libjpeg API. By default,
version 6b is built. If you need compatibility with libjpeg 7 or 8,
set API=7 or API=8 in the script's environment.
Usage
-----
To run the binaries, either call them by their full paths, e.g:
$ /opt/mozjpeg/bin/cjpeg
...or else:
$ source /etc/profile.d/mozjpeg.sh
...to temporarily make mozjpeg the default, in the current shell.
Running e.g. "cjpeg" will now run the mozjpeg one. If you wanted to
do this permanently for all users (not recommended), you could:
# chmod +x /etc/profile.d/mozjpeg.sh
...then log out and back in. The profile script isn't executable by
default, to avoid surprises.
Development
-----------
To compile & link with the mozjpeg libraries, use -I/opt/mozjpeg/include
and -L/opt/mozjpeg/lib (or lib64). You might also want -static, or
else -Wl,-rpath,/opt/mozjpeg/lib (or lib64). Starting with version 3.2,
there's also pkg-config support for mozjpeg. If you source the profile
script, software that uses pkg-config should find and link with the
mozjpeg libraries automatically.
Java Support
------------
Optionally, mozjpeg can be built with Java wrapper support
for turbojpeg. To do this, install one of: jdk, openjdk8,
openjdk7, or openjdk6 (or possibly one of the zulu-openjdk*
packages; untested). Then run this script with JAVA=yes in
the environment. The Java library will be installed as
/opt/mozjpeg/classes/turbojpeg.jar, and the docs will be in
/usr/doc/mozjpeg-$VERSION/javadoc.