Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

libjpeg

From Wikipedia, the free encyclopedia
(Redirected fromLibjpeg-turbo)
Free software library for handling the JPEG image format
libjpeg
Logo IJG libjpeg v9
Original author(s)Tom Lane
Developer(s)
  • Independent JPEG Group
  • Guido Vollbeding[1][2]
Initial releaseOctober 7, 1991; 33 years ago (1991-10-07)
Stable release
9f[3] Edit this on Wikidata / 14 January 2024; 14 months ago (14 January 2024)
Repositorywww.ijg.org/files/
Written inC
Operating systemCross-platform
Typelibrary
LicenseCustomBSD-like (free software)
Website

libjpeg is a freelibrary withfunctions for handling theJPEG image data format. It implements a JPEGcodec (encoding and decoding) alongside various utilities for handling JPEG data.It is written inC and distributed asfree software together with itssource code under the terms of a custompermissive (BSD-like) free software license, which demandsattribution.The original variant is maintained and published by the Independent JPEG Group (IJG). Meanwhile, there are severalforks with additional features.

JPEGJFIF 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.[4]

Utilities

[edit]

The following utility programs are shipped together 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
for transformation of existing JPEG files.

jpegtran

[edit]
jpegtran transforms JPEG data without reencoding
(here with user interfaceCropGUI)

Thecommand-line programjpegtran provides several features for reformatting and recoding the representation of theDCT coefficients, for transformation of actual image data and for discarding auxiliary data in JPEG files, respectively. The transformations regarding the representation of the coefficients comprise:

These transformations are each completely lossless and reversible. The transformations on the image data comprise:

  • eliminate non-standard application-specific data inserted by some image programs,
  • perform certain transformations on a file, such as:
    • discarding of colour channels (conversion to greyscale),
    • rotating andflipping in steps of 90 degrees,
    • cropping or joining at image block borders (every 8×8 or 16×16 pixels),
    • rescaling.[8]

These arelossless and reversible only regarding the image data that is kept. Reencoding with repeated lossy quantisation of the image data (generation loss) does not take place.

History

[edit]

The JPEG implementation of the Independent JPEG Group (IJG) was first publicly released on 7 October 1991 and has been considerably developed since that time.The development was initially mainly done byTom Lane.Theopen-source implementation of the IJG was one of the major open-source packages and was key to the success of the JPEG standard. Many companies incorporated it into a variety of products such as image editors and web browsers.[9]

For version 5, which was released on September 24, 1994, the whole code base was rewritten. It introduced the utility programsrdjpgcom andwrjpgcom for handling embedded text comments.The version 6 from 2 August 1995 came with support for progressive JPEG and for the first time with the utility programjpegtran. This utility was extended with features to rotate and flip images and grayscale reduction in version 6b.

libjpeg-turbo and descendants

[edit]

From version 6b of libjpeg of 27 March 1998, Miyasaka Masaru forked a branch namedlibjpeg/SIMD, which included x86 SIMD optimisations. It got substantial contributions from the TigerVNC and the VirtualGL projects in 2009. On that basis the libjpeg-turbo project was created in 2010.[10]

On 4 March 2014, the first version of the filesize-optimising forkMozJPEG was published. For this version Josh Aas from Mozilla Research reworked thePerl scriptjpegcrush fromx264's main developer Loren Merritt and integrated it into the code base of libjpeg-turbo.[11]

On 10 July 2014, Mozilla released version 2.0, which mainly added trellis quantisation and is now able to reduce the size of baseline JPEGs also.Facebook, Inc. donated60000 dollars for the development of the next version,[12] andCloudFlare assigned a developer for the improvement of MozJPEG.[13]

In 2019, libjpeg-turbo became the ISO and ITU endorsed reference implementation for the JPEG format.[14]

In April 2024, Google introducedJpegli, a new JPEG coding library that offers enhanced capabilities and a 35% compression ratio improvement at high quality compression settings, while the coding speed is comparable with MozJPEG.[15]

Change in IJG leadership

[edit]

After 11 years and a change in leadership, the IJG under Guido Vollbeding released new versions of libjpeg (7 through 9), of which each broke ABI compatibility with previous versions.[16] The changes that were held in prospect after the 6x series were not delivered.[17]In version 7, support forarithmetic coding was introduced, which earlier has been rejected because of thepatent situation, as well as the crop feature in jpegtran (-crop).[17]

Versions 8 and 9 served basically for the introduction of controversial[18] incompatible format extensions. These are widely regarded as ineffective and inferior to existing, standardised solutions.[19] Their standardisation was rejected after submission to theITU-T. The original organiser Tom Lane and others criticize these changes as a break from the goals of the IJG.[18]

Versions

[edit]
VersionReleasedNew features
ITU T.81 JPEG Compatible
Old version, not maintained: 11991
  • First release
  • Baseline or optimized JPEG
  • GIF or PPM output
Old version, not maintained: 21991
  • Internal improvements
  • More input/output formats
Old version, not maintained: 31992Internal and image quality improvements
Old version, not maintained: 41992Internal and speed improvements
Old version, not maintained: 4a1993-02-18
Old version, not maintained: 51994-09-24Internal improvements and revised API
Old version, not maintained: 5a1994-12-07
Old version, not maintained: 5b1995-03-15
Old version, not maintained: 61995-08-02
  • Progressive JPEG
  • jpegtran (convert between baseline and progressive)
Old version, not maintained: 6a1996-02-07
Old version, still maintained: 6b1998-03-27
  • jpegtran extended to lossless rotate

(used bylibjpeg-turbo,MozJPEG andJpegli)

Old version, not maintained: 72009-06-27
  • jpegtran extended to lossless crop
  • T.851 Arithmetic Coding[20]
  • Scaled DCT[21]
Proprietary non-compatible extensions
Old version, not maintained: 82010-01-10
  • SmartScale extension (ITU rejected)[22][23]
  • jpegtran extended to use SmartScale
  • Internal fixes
Old version, not maintained: 8a2010-02-28RGBA
Old version, not maintained: 8b2010-05-16Memory corruption & build fixes
Old version, not maintained: 8c2011-01-16Option for selecting DCT block size (SmartScale)
Old version, not maintained: 8d2012-01-15RGB JPEG (no color transform to YCbCr)
Old version, not maintained: 92013-01-13
  • YCoCg color
  • Lossless compression (1x1 DCT)[24]
Old version, not maintained: 9a2014-01-19
  • "JFIFv2"scRGB Wide color gamut (standard unknown)
  • 8-12 bit color (standardJPEG)
Old version, not maintained: 9b2016-01-17Computation improvements
Old version, not maintained: 9c2018-01-14jpegtran -wipe
Old version, not maintained: 9d2020-01-12
  • Code cleanup
  • Huffman optimization
  • x64 support (MSVC)
  • jpegtran -drop
Old version, not maintained: 9e2022-01-16ARM and ARM64 support (MSVC)
Latest version:9f2024-01-14
  • ARM64EC support (MSVC)
  • Xcode build system
  • C++Builder/RAD Studio build system
Legend:
Old version, not maintained
Old version, still maintained
Latest version
Latest preview version
Future version

Forks

[edit]

Well-known forks are libjpeg-turbo, which optimises for speed of execution, and MozJPEG, which optimises for smaller file sizes.

There is also asimilarly named library from theISO, which aims to be a complete implementation of JPEG,JPEG XT andJPEG LS standards.[25]

libjpeg-turbo

[edit]
libjpeg-turbo
Logo libjpeg-turbo
Developer(s)libjpeg-turbo Project
Initial releaseNovember 19, 2010; 14 years ago (2010-11-19)
Stable release
3.1.0[26] Edit this on Wikidata / 12 December 2024; 3 months ago (12 December 2024)
Repositorygithub.com/libjpeg-turbo
Websitelibjpeg-turbo.org

libjpeg-turbo is afork of libjpeg that usesSIMDinstructions to accelerate baseline JPEG encoding and decoding. Many projects are now using libjpeg-turbo instead of libjpeg, including popular Linux distributions (Fedora,Debian,Mageia,openSUSE, ...),Mozilla, andChrome.[27][28][29] Apart from performance, some projects have chosen to use libjpeg-turbo because it allows them to retain backwardABI compatibility with the older libjpeg v6b release.[30] libjpeg v7, v8 and v9 broke ABI compatibility with prior releases.[16]

libjpeg-turbo implements the standard-compliant arithmetic coding and lossless crop features seen in libjpeg v7. It can also be configured to be compatible with the libjpeg v7 or v8 ABI, but it does implement DCT scaling and the proprietary SmartScale, which builds on DCT scaling.[31] libjpeg-turbo chooses not to support SmartScale, because it is not anITU-T standard and because their own research finds it (and DCT scaling) ineffective.[21] By extension, since the only major new feature in libjpeg v9 is specific to the SmartScale format, the libjpeg-turbo Project has chosen to forgo emulating libjpeg v9.[citation needed]

Since 2019, libjpeg-turbo is one of the two JPEG reference implementations, available as ISO/IEC 10918-7 and ITU-T T.873.[14] The other reference implementation is ISO libjpeg which also includes support for JPEG XT and JPEG LS.[citation needed]

MozJPEG

[edit]
MozJPEG
MozJPEG
MozJPEG tries several partitionings of the spectrum of DCT coefficients
Developer(s)Mozilla Research
Initial releaseMarch 4, 2014; 11 years ago (2014-03-04)
Stable release
4.1.5 / October 12, 2023; 17 months ago (2023-10-12)[32]
Websitegithub.com/mozilla/mozjpeg

MozJPEG is a fork from libjpeg-turbo done by Josh Aas and others from Mozilla Research. It aims to speed up loading times of webpages by achieving a reduction in file size (of about 10%) and therefore transmission time through improvement of coding efficiency while retaining image quality. To achieve this, it uses more processing power for the encoding (asymmetry) while retaining full compatibility with the JPEG standard and requiring no changes on the decoder side.[citation needed]

The techniques MozJPEG uses to achieve high compression include optimisingHuffman trees, using progressive coding to optimally split the spectrum of DCT coefficients into separate scans, and through the use oftrellis quantisation. Additionally, the presets are aggressively tuned towards the minimisation of file sizes.[citation needed]

Besides libjpeg-turbo, MozJPEG also builds upon jpegcrush, aPerl script by Loren Merritt.[11][33]

Jpegli

[edit]
Jpegli
Developer(s)Google
Initial releaseNovember 14, 2020; 4 years ago (2020-11-14)
Stable release
0.11.0[34] / September 13, 2024; 6 months ago (2024-09-13)
Websitegithub.com/google/jpegli

In April 2024, Google introducedJpegli, a new JPEG coding library that offers enhanced capabilities and a 35% compression ratio improvement at high quality compression settings, while the coding speed is comparable with MozJPEG.[35]

ISO libjpeg

[edit]
Main article:JPEG XT § libjpeg

ISO/IECJoint Photography Experts Group maintains a reference software implementation for baseJPEG (ISO/IEC 10918-1 and 18477-1) andJPEG XT extensions (ISO/IEC 18477 Parts 2 and 6-9), as well as losslessJPEG-LS (ISO/IEC 14495).[36] It also includes some of the optimizations of MozJPEG. Though also named libjpeg, it is not related to the source code provided by Independent JPEG Group (IJG) and does not support proprietary extensions introduced by IJG since 2007.

See also

[edit]

References

[edit]
  1. ^Göhler, Lars (April 29, 2020)."New Version of libjpeg (Ver. 9d) of Independent JPEG Group available now".JPEG Reference. Independent JPEG Group. Retrieved2021-01-25.
  2. ^Friesenhahn, Bob (June 6, 2020)."Re: [Libjpeg-devel-6x] 4 Integer Overflow Errors in libjpeg-9c".libjpeg-devel-6x (Mailing list). Retrieved2021-01-25.The only concern was that Guido Vollbeding is not likely subscribed to this list and IJG JPEG is essentially developed by one person.
  3. ^"Independent JPEG Group". Retrieved27 January 2024.
  4. ^JPEG JFIF
  5. ^Jpegcrop Preferences and Options description
  6. ^Filmic Games >> The greatest failure of our patent system was...Archived 2012-09-01 at theWayback Machine
  7. ^680385 - Firefox does not show arithmetic coded jpegs
  8. ^New jpegtran features
  9. ^JPEG homepage
  10. ^"libjpeg-turbo".libjpeg-turbo.
  11. ^abAndré Kramer (heise.de-Newsticker), January 14, 2013:Mozilla-Encoder verbessert JPEG-Kompression
  12. ^Sebastian Grüner, 16. Juli 2014:MozJPEG 2.0: Facebook unterstützt JPEG-Encoder von Mozilla
  13. ^"CloudFlare möchte zu Mozillas JPEG-Encoder beitragen". 30 July 2014.
  14. ^ab"ISO/IEC 10918-7:2019 Information technology — Digital compression and coding of continuous-tone still images — Part 7: Reference software".ISO."T.873 (05/19): Information technology - Digital compression and coding of continuous-tone still images: Reference software".www.itu.int.
  15. ^"Introducing Jpegli: A New JPEG Coding Library". Google Open Source Blog. 3 April 2024. Archived fromthe original on 3 April 2024. Retrieved4 April 2024.
  16. ^ab"libjpeg: API/ABI changes review". Retrieved2017-10-28.
  17. ^abMans Rullgard (Hardwarebug.org), August 4, 2009:IJG is backArchived 2014-07-16 at theWayback Machine
  18. ^abLane, Tom (January 16, 2013)."Libjpeg-turbo-users, jpeg-9, API/ABI compatibility, and the future role of this project".fedoraproject.org. Archived fromthe original on January 3, 2014.
  19. ^Rullgard, Mans (February 1, 2010)."IJG swings again, and misses".Hardwarebug. Archived fromthe original on December 10, 2024.
  20. ^"ITU-T T.81 (JPEG-1)-based still-image coding using an alternative arithmetic coder" (pdf). September 2009.
  21. ^ab"libjpeg-turbo | About / A Study on the Usefulness of DCT Scaling and SmartScale".libjpeg-turbo.org.
  22. ^ITU-T JPEG-Plus Proposal R3
  23. ^Evolution of JPEG
  24. ^JPEG 9 Lossless Coding
  25. ^"Libjpeg".GitHub. 6 October 2021.
  26. ^"Release 3.1.0 · libjpeg-turbo/libjpeg-turbo". Retrieved13 December 2024.
  27. ^Software That Uses or Provides libjpeg-turbo. February 9, 2012.
  28. ^Issue 48789 – chromium – Use libjpeg-turbo instead of libjpeg. April 14, 2011.
  29. ^Bug 698519 – Update to libjpeg-turbo 1.2. February 28, 2012
  30. ^libjpeg for F14. February 9, 2012.
  31. ^libjpeg-turbo README fileArchived 2018-12-14 at theWayback Machine
  32. ^"Releases · mozilla/mozjpeg".github.com. Retrieved2022-08-14.
  33. ^Andreas Donath (golem.de), March 6, 2014:Mozilla will JPEGs besser komprimieren
  34. ^Jpegli Changelog
  35. ^"Introducing Jpegli: A New JPEG Coding Library". Google Open Source Blog. 3 April 2024. Archived fromthe original on 3 April 2024. Retrieved4 April 2024.
  36. ^"Jpeg - Jpeg Xt".

External links

[edit]
Wikimedia Commons has media related tolibjpeg.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Libjpeg&oldid=1276871521#libjpeg-turbo"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp