Libjpeg

Vorlage:More footnotes Vorlage:Lowercase

Libjpeg

Basisdaten

Entwickler Tom Lane
Erscheinungsjahr 7. Oktober 1991[1]
Aktuelle Version 9f[2]
(14. Januar 2024)
Betriebssystem Plattformunabhängig
Programmier­sprache C[3]
www.ijg.org

libjpeg is a widely-used free software library written in C which implements JPEG decoding and encoding functions alongside various utilities for handling JPEG images. This library is maintained by the Independent JPEG Group (IJG), an informal organization which is not affiliated with the JPEG ISO committee.

The Open Source software implementation of the Independent JPEG Group (IJG), as well as being one of the major Open Source packages, was key to the success of the JPEG standard and was incorporated by many companies into a variety of products such as image editors and Internet browsers.[4]

The widely used IJG implementation was first publicly released in October 1991 and has been considerably developed since that time. JPEG JFIF images are widely used on the Web. The amount of compression can be adjusted to achieve the desired trade-off between file size and visual quality.[5]

Utilities

The following utility programs are available with libjpeg:

  • cjpeg and djpeg, for performing conversions between JPEG and some other popular image file formats.
  • rdjpgcom and wrjpgcom, for inserting and extracting textual comments in JPEG files.
  • jpegtran – a utility for lossless transcoding between different JPEG formats.

The jpegtran command-line program is useful to:

  • optimize the Huffman coding layer of a JPEG file to increase compression,
  • convert to JPEG Arithmetic coding to further increase compression (and back) [6] [7] [8],
  • convert between progressive and non-progressive JPEG formats,
  • eliminate non-standard application-specific data inserted by some image programs, or
  • to perform certain transformations on a file, such as:

...all done "losslessly" (i.e. without decompressing and recompressing the data, and so causing a reduction of image quality due to generation loss).

There is an associated Windows application, Jpegcrop, which provides a user interface to jpegtran.

Version roadmap

Overview

There are currently two conditions which trigger a major version bump of the JPEG library:

  1. New types of files can be created which are not compatible with prior releases, or
  2. Changes in the master records which break the binary compatibility (usually addition of entries for new functions).

In all major upgrades since v6 both conditions 1. and 2. came together, while the source compatibility (API) could largely be retained.

Major version New file format feature New master record entries References
Ältere Version; nicht mehr unterstützt: 6 progressive JPEG support progressive_mode ... ITU-T Recommendation T.81
ISO/IEC IS 10918-1
Ältere Version; nicht mehr unterstützt: 7 arithmetic coding support scale_num/scale_denom for
compression (encoding) ...
ITU-T JPEG-Plus Proposal ... [10]
Aktuelle Version: 8 SmartScale
(variable block size)
block_size/lim_Se etc. Evolution of JPEG [11]
Vorabversion: 9 internal color transform
(FF F8 LSE extension marker)
color_transform JPEG 9 Lossless Coding [12]
InfAI JPEG Development Site [13]
Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version

For version 7 both conditions were different subjects (arith_code entry already existed), other versions are same subject.

Timeline

libjpeg-turbo

libjpeg-turbo is a fork of libjpeg that uses SIMD instructions to accelerate baseline JPEG encoding and decoding. Many projects are now using libjpeg-turbo instead of libjpeg, including Fedora (since Fedora 14), Mozilla (since Firefox 5.0, while Firefox 13.0 gained additional performance by adding the accelerated Huffman coding routines from libjpeg-turbo 1.2.0, which were previously excluded due to a license conflict), and Google Chrome (since version 11).[14][15][16] Apart from performance, some projects have chosen to use libjpeg-turbo because it allows them to retain backward ABI compatibility with the older libjpeg v6b release.[17] Both libjpeg v7 and v8 broke ABI compatibility with prior releases.[18] libjpeg-turbo can be configured to be compatible with the v8 ABI but it does not implement the complete set of features of libjpeg8d,[19] so some files created by libjpeg8 cannot be read by libjpeg-turbo, or will not be decompressed correctly.

See also

Portal: Free Software – Übersicht zu Wikipedia-Inhalten zum Thema Free Software

References

Vorlage:Reflist

  1. www.ijg.org. (abgerufen am 6. Februar 2017).
  2. Independent JPEG Group. (abgerufen am 27. Januar 2024).
  3. The libjpeg Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 26. September 2018).
  4. JPEG homepage.
  5. JPEG JFIF.
  6. Jpegcrop Preferences and Options description.
  7. Filmic Games >> The greatest failure of our patent system was...
  8. 680385 - Firefox does not show arithmetic coded jpegs.
  9. New jpegtran features.
  10. Contributed document - Word .doc file: ITU-T JPEG-Plus Proposal R3
  11. Contributed document - Word .doc file: Evolution of JPEG
  12. Contributed document - Word .doc file: JPEG 9 Lossless Coding
  13. News c't magazine 2012 issue 18 page 43, Software Links
  14. Software That Uses or Provides libjpeg-turbo. February 9, 2012.
  15. Issue 48789 – chromium – Use libjpeg-turbo instead of libjpeg. April 14, 2011.
  16. Bug 698519 – Update to libjpeg-turbo 1.2. February 28, 2012
  17. libjpeg for F14. February 9, 2012.
  18. libjpeg: API changes/compatibility. February 9, 2012
  19. README-turbo.txt