Utility to optimize/compress jpeg/jfif files.
jpegoptim [ options ] [ filenames ]
jpegoptim is used to optimize/compress jpeg files. Program supports lossless optimization, which is based on optimizing the Huffman tables. And so called "lossy" optimization where in addition to optimizing Huffman tables user can specify upperlimit for image quality.
NOTE! By default jpegoptim modifies the input files (if they are optimized), to preserve original files use option -d to specify alternate directory for saving the optimized files to.
Only normal files are optimized (symbolic links and special files are skipped). Also, any other hard links to the file being optimized (as created using link(2)) are unaffected.
Options may be either the traditional POSIX one letter options, or the GNU style long options. POSIX style options start with a single ``-'', while GNU long options start with ``-\^-''.
Options offered by jpegoptim are the following:
-d<path>, --dest=<path>
Sets alternative destination directory where to save optimized files (default is to overwrite the originals). Please note that unchanged files won't be added to the destination directory. This means if the source file can't be compressed, no file will be created in the destination path.
-f, --force
Force optimization, even if the result would be larger than the original file.
-h, --help
Displays short usage information and exits.
-m<quality>, --max=<quality>
Sets the maximum image quality factor (disables lossless optimization mode, which is by default enabled). This option will reduce quality of those source files that were saved using higher quality setting. While files that already have lower quality setting will be compressed using the lossless optimization method.
Valid values for quality parameter are: 0 - 100
-n, --noaction
Don't really optimize files, just print results.
-S<size>, --size=<size>
Try to optimize file to given size (disables lossless optimization mode). Target size is specified either in kilobytes (1 - n) or as percentage (1% - 99%) of the original file size.
-T<threshold>, --threshold=<threshold>
Keep the file unchanged if the compression gain is lower than the threshold (%).
Valid values for threshold are: 0 - 100
-b, --csv
Print progress info in CSV format.
-o, --overwrite
Overwrite target file even if it exists (when using -d option).
-p, --preserve
Preserve file modification times.
-q, --quiet
Quiet mode.
-t, --totals
Print totals after processing all files.
-v, --verbose
Enables verbose mode (positively chatty).
--all-normal
Force all output files to be non-progressive. Can be used to convert all input files to progressive JPEGs when used with --force option.
--all-progressive
Force all output files to be progressive. Can be used to convert all input files to normal (non-progressive) JPEGs when used with --force option.
-s, --strip-all
Strip all markers from output file. (NOTE! by default only Comment & Exif/IPTC/PhotoShop/ICC/XMP markers are kept, everything else is discarded). Output JPEG still likely will contains one or two markers (JFIF and Adobe APP14) depending on colorspace used in the image, as these markers are generated by the libjpeg encoder automatically.
--strip-none
Preserve "all" markers in the image. This will leave all markers untouched in the image, except JFIF (APP0) and Adobe (APP14) markers as those get regenerated by the libjpeg library.
--strip-com
Strip Comment (COM) markers from output file.
--strip-exif
Strip EXIF markers from output file.
--strip-iptc
Strip IPTC / Adobe Photoshop (APP13) markers from output file.
--strip-icc
Strip ICC profiles from output file.
--strip-xmp
Strip XMP profiles from output file.
--stdout
Send output image to standard output. Note, if optimization didn't create smaller file than the input file, then no output (image) is sent to standard output. (Option -f can be used to force output of image always, even if optimized image was not smaller than input).
--stdin
Read input image from standard input. When this option is used then only one image is read from standard output. Any (other) input files specified on command line are ignored. Note, if input file '-' is seen on command line then standard input is also assumed.
Currently this option will explicitly enable -f option, thus output image is always sent to standard output (even if no optimization was possible).
When using --size option, resulting file is not always exactly the requested size. Workaround is to re-run jpegoptim on the same file again which often will result file closer to target size.
Timo Kokkonen <[email protected]>
Copyright (C) 1996-2014 Timo Kokkonen
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.