Reference Sources



The Independent JPEG Group (IJG) is responsible for the reference implementation of the original JPEG standard. The reference software from the Independent JPEG Group was a key to the success of the original JPEG standard and has found widespread adoption in applications of image coding. Particularly, all contemporary digital photo cameras support the capture of images in JPEG format as the common medium for image interchange, and all image viewers, image editors, and Web browsers can display JPEG images as common standard.

The IJG implementation was first publicly released in October 1991 and has been considerably developed since that time.

In June 2009, Independent JPEG Group published a new major release (version 7) of the software package to enable a new set of features for image coding application and therewith to continue the success story of JPEG.

In January 2010, Independent JPEG Group introduced a new release (version 8) with extensions providing the fundament for the next generation image coding standard.

In January 2013, Independent JPEG Group released version 9 with improvements for the new introduced lossless coding mode.

Version 9d is currently in development and is planned for release in January 2020.

Note: Published development versions are intended to provide stable functionality, but may not be complete regarding the documentation, and further features may be added for the release. You are encouraged to use these versions if you need the new functions (see below).
JPEG 9 Logo

Filename Size Last modified Type 1,071 KB 14 Jan 2018 Zip Compressed Data
jpegsrc.v9c.tar.gz 1,005 KB 14 Jan 2018 Unix Tape Archive


Preliminary version 9d, intended for release in January 2020:

Filename Size Last modified Type 1,103 KB 12 May 2019 Zip Compressed Data
jpegsrc.v09d.tar.gz 1,040 KB 12 May 2019 Unix Tape Archive


CHANGE LOG for Independent JPEG Group’s JPEG Software

Version 9d 12-Jan-2020

Optimize the optimal Huffman code table generation to produce
slightly smaller files. Thank to John Korejwa for suggestion.
Note: Requires rebuild of testimgp.jpg.

Decoding Huffman: Use default tables if tables are not defined.
Thank to Simone Azzalin for report (Motion JPEG).

Add sanity check in optimal Huffman code table generation.
Thank to Adam Farley for suggestion.

rdtarga.c: use read_byte(), with EOF check, instead of getc()
in read_*_pixel().
Thank to Chijin Zhou for cjpeg potential vulnerability report.

jmemnobs.c: respect the max_memory_to_use setting in
jpeg_mem_available() computation. Thank to Sheng Shu and
Dongdong She for djpeg potential vulnerability report.

jdarith.c, jdhuff.c: avoid left shift of negative value
compiler warning in decode_mcu_AC_refine().
Thank to Indu Bhagat for suggestion.

Add x64 (64-bit) platform support, avoid compiler warnings.
Thank to Jonathan Potter, Feiyun Wang, and Sheng Shu for suggestion.

Adjust libjpeg version specification for pkg-config file.
Thank to Chen Chen for suggestion.

Restore GIF read and write support from libjpeg version 6a.
Thank to Wolfgang Werner (W.W.) Heinz for suggestion.

Improve consistency in raw (downsampled) image data processing mode.
Thank to Zhongyuan Zhou for hint.

Version 9c 14-Jan-2018

jpegtran: add an option to the -wipe switch to fill the region
with the average of adjacent blocks, instead of gray out.
Thank to Caitlyn Feddock and Maddie Ziegler for inspiration.

Make range extension bits adjustable (in jpegint.h).
Thank to Robin Watts for suggestion.

Provide macros for fflush() and ferror() in jinclude.h in order
to facilitate adaption by applications using an own FILE class.
Thank to Gerhard Huber for suggestion.

Add libjpeg pkg-config file. Thank to Mark Lavi, Vincent Torri,
Patrick McMunn, and Huw Davies for suggestion.

Add sanity checks in cjpeg image reader modules.
Thank to Bingchang, Liu for reports.