Libjpeg - libjpeg - Wikipedia
![]() | |
Vývojáři | Nezávislá skupina JPEG |
---|---|
První vydání | 7. října 1991 |
Stabilní uvolnění | 9. den / 12. ledna 2020 |
Napsáno | C |
Operační systém | Cross-platform |
Typ | knihovna |
Licence | Zvyk BSD -jako (svobodný software ) |
webová stránka | ijg |
libjpeg je zdarma knihovna s funkce pro manipulaci s JPEG formát obrazových dat. Implementuje JPEG kodek (kódování a dekódování) spolu s různými nástroji pro zpracování dat JPEG. Je napsán v C a distribuovány jako svobodný software společně s jeho zdrojový kód podle podmínek zvyku tolerantní (BSD - jako) bezplatná softwarová licence, která vyžaduje atribuce Původní varianta je udržována a publikována nezávislou skupinou JPEG (IJG). Mezitím jich je několik vidličky s dalšími funkcemi.
JPEG JFIF obrázky jsou na webu široce používány. Míra komprese může být upravena tak, aby bylo dosaženo požadovaného kompromisu mezi velikostí souboru a vizuální kvalitou.[1]
Utility
Následující obslužné programy jsou dodávány společně s libjpeg:
- cjpeg a djpeg
- pro provádění převodů mezi JPEG a některými dalšími populárními formáty obrazových souborů.
- rdjpgcom a wrjpgcom
- pro vkládání a extrahování textových komentářů do souborů JPEG.
- jpegtran
- pro transformaci stávajících souborů JPEG.
jpegtran

(zde s uživatelským rozhraním CropGUI)
The příkazový řádek program jpegtran poskytuje několik funkcí pro přeformátování a překódování reprezentace souboru DCT koeficienty, pro transformaci skutečných obrazových dat a pro vyřazení pomocných dat v souborech JPEG. Transformace týkající se zastoupení koeficientů zahrnují:
- optimalizace Huffmanovo kódování vrstva souboru JPEG pro zvýšení komprese,
- převod mezi progresivním a sekvenčním formátem JPEG,
- konverze mezi Huffmanem a aritmetické kódování v entropické kódování vrstva.[2][3][4]
Každá z těchto transformací je zcela bezeztrátová a reverzibilní. Transformace obrazových dat zahrnují:
- eliminovat nestandardní data specifická pro aplikaci vložená některými obrazovými programy,
- provést určité transformace souboru, například:
- vyřazení barevných kanálů (převod do odstínů šedé),
- rotující a převrácení v krocích po 90 stupních,
- oříznutí na okrajích bloku obrazu (každých 8 × 8 nebo 16 × 16 pixelů),
- změna měřítka.[5]
Tyto jsou bezztrátový a reverzibilní pouze pokud jde o obrazová data, která jsou uchována. Překódování s opakovanou ztrátovou kvantizací obrazových dat (generační ztráta ) neprobíhá.
Existuje přidružená aplikace Windows, Jpegcrop, který poskytuje uživatelské rozhraní pro jpegtran. Pro Unixové systémy jako Linux tam je zdarma CropGUI s podobnou funkčností. Více programů podporujících bezztrátové transformační funkce JPEG založené na kódu IJG je uvedeno na Seznam bezztrátových aplikací.
Dějiny
Implementace JPEG nezávislé skupiny JPEG (IJG) byla poprvé veřejně vydána 7. října 1991 a od té doby byla značně vyvinuta. Vývoj byl zpočátku prováděn hlavně Tom Lane.v open-source implementace IJG byla jedním z hlavních open-source balíčků a byla klíčem k úspěchu standardu JPEG. Mnoho společností jej začlenilo do různých produktů, jako jsou editory obrázků a webové prohlížeče.[6]
U verze 5, která byla vydána 24. září 1994, byla přepsána celá kódová základna. Představila obslužné programy rdjpgcom a wrjpgcom pro zpracování komentářů vloženého textu. Verze 6 ze dne 2. srpna 1995 přišla s podporou progresivního JPEG a poprvé s obslužným programem jpegtran. Tento nástroj byl ve verzi 6b rozšířen o funkce pro otáčení a převracení obrázků a redukci stupňů šedi.
Od verze 6b libjpeg ze dne 27. března 1998 Miyasaka Masaru rozdvojil větev s názvem libjpeg / SIMD, který zahrnoval x86 SIMD optimalizace. V roce 2009 získala značné příspěvky od projektů TigerVNC a VirtualGL. Na tomto základě byl v roce 2010 vytvořen projekt libjpeg-turbo.[7]
Po 11 letech a změně ve vedení vydala IJG nové verze libjpeg (7 až 9), z nichž každá porušila kompatibilitu ABI s předchozími verzemi.[8] Změny, které byly uchovány v perspektivě po sérii 6x, nebyly doručeny.[9]Ve verzi 7 podpora pro aritmetické kódování byl zaveden, který byl dříve zamítnut z důvodu patent situace, stejně jako funkce oříznutí v jpegtranu (-oříznutí
).[9]
Verze 8 a 9 sloužily v zásadě k zavedení kontroverzních[10] nekompatibilní rozšíření formátu. Ty jsou obecně považovány za neúčinné a nižší než stávající, standardizovaná řešení.[11][12] Jejich standardizace byla zamítnuta po předložení ITU-T. Původní organizátor Tom Lane a další kritizují tyto změny jako přestávku od cílů IJG.[10]
Dne 4. března 2014, první verze vidlice optimalizující velikost souborů mozjpeg byl publikován. Pro tuto verzi přepracoval Josh Aas z Mozilla Research Perl skript jpegcrush z x264 Hlavní vývojářka Loren Merritt a integrovala ji do kódové základny libjpeg-turbo.[13]
10. července 2014 vydala Mozilla verzi 2.0, která přidala hlavně kvantizaci mřížky a nyní je schopna zmenšit také velikost základních JPEG. Facebook, Inc. darováno 60000 dolarů pro vývoj další verze,[14] a CloudFlare přidělen vývojáře pro vylepšení mozjpeg.[15]
Verze
Verze | Uvolněno | Nové vlastnosti | |
---|---|---|---|
Kompatibilní s ITU T.81 JPEG | |||
1 | 1991 | První vydání Základní nebo optimalizovaný JPEG GIF nebo PPM výstup | |
2 | 1991 | Interní vylepšení Více vstupních / výstupních formátů | |
3 | 1992 | Vylepšení interní a kvality obrazu | |
4 | 1992 | Interní a rychlostní vylepšení | |
4a | 1993-02-18 | ||
5 | 1994-09-24 | Interní vylepšení a revidované API | |
5a | 1994-12-07 | ||
5b | 1995-03-15 | ||
6 | 1995-08-02 | Progresivní JPEG jpegtran (převod mezi základní a progresivní) | |
6a | 1996-02-07 | ||
6b | 1998-03-27 | jpegtran rozšířen na bezztrátové otáčení Používá libjpeg-turbo | |
Proprietární nekompatibilní rozšíření | |||
7 | 2009-06-27 | jpegtran se rozšířil o bezztrátovou úrodu T.851 aritmetické kódování[16] | |
8 | 2010-01-10 | Interní opravy jpegtran rozšířen o použití SmartScale | |
8a | 2010-02-28 | RGBA | |
8b | 2010-05-16 | ||
8c | 2011-01-16 | Variabilní velikost bloku DCT | |
8d | 2012-01-15 | RGB JPEG (žádná barevná transformace na YCbCr) | |
9 | 2013-01-13 | YCoCg barva Bezztrátová komprese (1x1 DCT)[19] | |
9a | 2014-01-19 | "JFIFv 2" scRGB Široký barevný gamut (neznámý standard) 8–12bitová barva (původní JPEG) | |
9b | 2016-01-17 | ||
9c | 2018-01-14 | ||
9d | 2020-01-12 |
Legenda: | Stará verze, neudržovaná | Starší verze, stále udržovaná | Aktuální stabilní verze |
---|
Vidlice
Známé vidlice jsou libjpeg-turbo, které optimalizují rychlost provádění, a mozjpeg, které optimalizují pro menší velikosti souborů.
Je tam také podobně pojmenovaná knihovna z ISO, jehož cílem je úplná implementace JPEG, JPEG XT a JPEG-LS standardy.[20]
libjpeg-turbo
![]() | |
Vývojáři | projekt libjpeg-turbo |
---|---|
První vydání | 2010 |
Stabilní uvolnění | 2.0.4 / 31. prosince 2019 |
webová stránka | libjpeg-turbo.org |
libjpeg-turbo je Vidlička libjpeg, který používá SIMD instrukce urychlit základní kódování a dekódování JPEG. Mnoho projektů nyní používá libjpeg-turbo místo libjpeg, včetně populárních distribucí GNU / Linux (Fedora, Debian, Mageia, openSUSE, ...), Mozilla, a Chrome.[21][22][23] Kromě výkonu se některé projekty rozhodly použít libjpeg-turbo, protože jim to umožňuje udržet se zpět ABI kompatibilita se starší verzí libjpeg v6b.[24] libjpeg v7, v8 a v9 porušily kompatibilitu ABI s předchozími verzemi.[8]
libjpeg-turbo lze nakonfigurovat tak, aby byl kompatibilní s libjpeg v7 nebo v8 ABI, ale neimplementuje kompletní sadu funkcí v posledních vydáních IJG, včetně rozšíření formátu SmartScale.[25] Projekt libjpeg-turbo se rozhodl nepodporovat SmartScale s odvoláním na obavy týkající se skutečnosti, že ITU-T standard a citují svůj vlastní výzkum, který zpochybňuje užitečnost funkce. Rozšíření, protože jediná hlavní nová funkce v libjpeg v9 je specifická pro formát SmartScale, se projekt libjpeg-turbo rozhodl vzdát se emulace libjpeg v9.[11] Proto soubory SmartScale vytvořené knihovnou libjpeg v8 a novější nebudou libjpeg-turbo správně dekomprimovány.
mozjpeg
![]() | |
![]() mozjpeg zkouší několik rozdělení spektra DCT koeficientů | |
Vývojáři | Mozilla Research |
---|---|
První vydání | 4. března 2014 |
Stabilní uvolnění | 3.3.1 / 17. března 2018[26] |
webová stránka | github.com/mozilla/mozjpeg |
mozjpeg je vidlice z libjpeg-turbo od Josha Aase a dalších z Mozilla Research. Jeho cílem je urychlit doby načítání webových stránek tím, že se dosáhne zmenšení velikosti souboru (přibližně o 10%), a tedy doby přenosu prostřednictvím zlepšení efektivity kódování při zachování kvality obrazu. K dosažení tohoto cíle využívá větší procesorový výkon pro kódování (asymetrii), přičemž si zachovává plnou kompatibilitu se standardem JPEG a nevyžaduje žádné změny na straně dekodéru.
Mezi techniky, které mozjpeg používá k dosažení vysoké komprese, patří optimalizace Huffman stromy, pomocí progresivního kódování k optimálnímu rozdělení spektra DCT koeficientů do samostatných skenů a pomocí mřížoví kvantování. Předvolby jsou navíc agresivně vyladěny směrem k minimalizaci velikostí souborů.
Kromě libjpeg-turbo staví mozjpeg také na jpegcrush, a Perl scénář Loren Merritt.[13][27]
Libjpeg ISO
Vývojáři | Thomas Richter / reference JPEG AhG |
---|---|
První vydání | 27. července 2012 |
Stabilní uvolnění | 1.55 / 20. července 2018 |
Licence | GNU GPLv3 |
webová stránka | github |
ISO / IEC Společná skupina odborníků na fotografování udržuje referenční implementaci softwaru pro základnu JPEG (ISO / IEC 10918-1 a 18477-1) a JPEG XT rozšíření (ISO / IEC 18477 části 2 a 6-9), stejně jako bezztrátové JPEG-LS (ISO / IEC 14495).[28] Ačkoli se také jmenuje libjpeg, nesouvisí se zdrojovým kódem poskytovaným nezávislou skupinou JPEG (IJG) a nepodporuje proprietární rozšíření zavedená IJG od roku 2007.
Viz také
Reference
- ^ JPEG JFIF
- ^ Popis předvoleb a možností Jpegcrop
- ^ Filmové hry >> Největší selhání našeho patentového systému bylo ... Archivováno 01.09.2012 na Wayback Machine
- ^ 680385 - Firefox nezobrazuje aritmeticky kódované soubory JPEG
- ^ Nové funkce jpegtran
- ^ Domovská stránka JPEG
- ^ http://libjpeg-turbo.virtualgl.org/
- ^ A b "libjpeg: Kontrola změn API / ABI". Citováno 2017-10-28.
- ^ A b Mans Rullgard (Hardwarebug.org), 4. srpna 2009: IJG je zpět Archivováno 16. 07. 2014 na Wayback Machine
- ^ A b Tom Lane, 16. ledna 2013: jpeg-9, kompatibilita API / ABI a budoucí role tohoto projektu
- ^ A b „A co libjpeg v9?“. tým libjpeg-turbo. Citováno 8. února 2013.
- ^ Mans Rullgard (Hardwarebug.org), 1. února 2010: IJG se houpá znovu a chybí
- ^ A b André Kramer (heise.de-Newsticker), 14. ledna 2013: Verbessert Mozilla-Encoder JPEG-komprese
- ^ Sebastian Grüner, 16. července 2014: mozjpeg 2.0: Facebook unterstützt JPEG-Encoder von Mozilla
- ^ http://www.soeren-hentzschel.at/mozilla/2014/07/30/cloudflare-moechte-zu-mozillas-jpeg-encoder-beitragen/
- ^ „ITU-T T.81 (JPEG-1) - kódování statických snímků pomocí alternativního aritmetického kodéru“ (pdf). Září 2009.
- ^ Návrh ITU-T JPEG-Plus R3
- ^ Vývoj formátu JPEG
- ^ Bezztrátové kódování JPEG 9
- ^ https://github.com/thorfdbg/libjpeg
- ^ Software, který používá nebo poskytuje libjpeg-turbo. 9. února 2012.
- ^ Číslo 48789 - chrom - Místo libjpeg použijte libjpeg-turbo. 14. dubna 2011.
- ^ Chyba 698519 - Aktualizace na libjpeg-turbo 1.2. 28. února 2012
- ^ libjpeg pro F14. 9. února 2012.
- ^ soubor README libjpeg-turbo Archivováno 14. 12. 2018 na Wayback Machine
- ^ „mozilla / mozjpeg“. GitHub. 17. března 2018. Citováno 17. září 2018.
- ^ Andreas Donath (golem.de), 6. března 2014: Mozilla bude JPEG besser komprimieren
- ^ https://jpeg.org/jpegxt/software.html
externí odkazy
- Oficiální web Nezávislé skupiny JPEG
- Časté dotazy k JPEG
- JPEGclub - Další funkce pro libjpeg
- Binární balíček libjpeg pro Windows (na GnuWin32 v SourceForge.net)
- libjpeg-turbo, vidlice libjpeg kompatibilní s ABI / API, která používá instrukce x86 SIMD k dosažení podstatného zrychlení oproti referenční implementaci.
- mozjpeg - vidlice optimalizující velikost souborů na GitHub
- Nyman, Robert; Aas, Josh (6. srpna 2014). „Používání mozjpeg k vytváření efektivních souborů JPEG“. Hacky. Mozilla.