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 9e was released in January 2022 and is the only true source reference JPEG codec.

JPEG 9 Logo

Filename Size Last modified Type 1,140 KB 16 Jan 2022 Zip Compressed Data
jpegsrc.v9e.tar.gz 1,023 KB 16 Jan 2022 Unix Tape Archive


CHANGE LOG for Independent JPEG Group’s JPEG Software

Version 9e 16-Jan-2022

Include alternate user interface files for cjpeg/djpeg.

jcparam.c: change default chrominance DC quantization factor
for lossless support. Note: Requires rebuild of test images.

rdgif.c, cderror.h: add sanity check for GIF image dimensions.
Thank to Casper Sun for cjpeg potential vulnerability report.

Add ARM and ARM64 platform support in the Visual Studio build.

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),
and to Martin Strunz for hint.

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.

Avoid out of bounds array read (AC derived table pointers)
in start pass in jdhuff.c. Thank to Peng Li for report.

Improve code sanity (jdhuff.c).
Thank to Reza Mirzazade farkhani for reports.

Add jpegtran -drop option; add options to the crop extension and wipe
to fill the extra area with content from the source image region,
instead of gray out.