Libjpeg
libjpeg是一個完全用C語言編寫的處理JPEG圖像資料格式的自由函式庫。它包含一個JPEG編解碼器的演算法實現,以及用於處理JPEG資料的多種實用程式。
開發者 | 獨立JPEG工作群組(Independent JPEG Group) |
---|---|
首次發布 | 1991年10月7日 |
目前版本 | 9e(2022年1月16日 | )
程式語言 | C |
作業系統 | 跨平台 |
類型 | 函式庫 |
許可協定 | 自訂類BSD(自由軟體) |
網站 | ijg |
該套軟體採用C語言編寫,並分發為附有原始碼的自由軟體,採用自訂的寬鬆(類BSD)自由軟體許可證,權利要求為署名。原始版本由獨立JPEG工作群組(IJG)維護和發布。此外,也有數個提供額外特性的分叉(Fork)。
實用程式
編輯下列實用程式隨libjpeg提供:
- cjpeg和djpeg:用於JPEG與其他流行的圖檔格式之間的轉換。
- rdjpgcom和wrjpgcom:用於在JPEG檔案中插入和提取文字注釋。
- jpegtran:用於在不同JPEG格式之間進行無失真轉換的工具。
jpegtran
編輯命令列介面 jpegtran提供了幾種功能,用於重新格式化和重新編碼DCT係數的表示,分別用於轉換實際圖像數據和丟棄JPEG檔案中的輔助數據。 關於係數表示的變換包括:
這些轉變都是完全無損且可逆的。 對圖像數據的轉換包括:
這些是非破壞性資料壓縮並且對於保留的圖像數據是可逆的。重複轉檔時不重新壓縮現有資料解決重複編碼(修改)對資料進行二次壓縮導致多次量化失真的問題
有一個相關的Windows應用程式Jpegcrop (頁面存檔備份,存於網際網路檔案館)為「jpegtran」提供了一個使用者介面。對於Linux等類Unix系統,自由的CropGUI (頁面存檔備份,存於網際網路檔案館)能提供類似功能。 許多程式基於IJG的代碼支援JPEG無失真轉換功能,部分名單見Lossless Applications List (頁面存檔備份,存於網際網路檔案館)(英文)。
歷史
編輯獨立JPEG工作群組(IJG)的JPEG實現首次公開發布於7 October 1991,並在那是已相當完善。 開發主要由Tom Lane完成。 IJG的開源是其中一個主要的開源包,並且是JPEG標準的成功的關鍵。許多公司將其整合到各種產品中,如圖像編輯器和網路瀏覽器。[6]
版本5發布於1994年9月24日,整個代碼庫被重寫。它引入了名為rdjpgcom和wrjpgcom的實用程式用於處理嵌入的文字注釋。
版本6於2 August 1995到來,支援漸進JPEG和第一版jpegtran實用程式。
摘要
編輯主版本 | 新增檔案格式特性 | 新增主記錄項 | 參考資料 |
---|---|---|---|
6 | 漸進式JPEG支援 | progressive_mode ... | ITU-T Recommendation T.81 ISO/IEC IS 10918-1 |
7 | 算術編碼支援 | scale_num/scale_denom for compression (encoding) ... |
ITU-T JPEG-Plus Proposal ...[7] |
8 | SmartScale (可變塊大小) |
block_size/lim_Se etc. | Evolution of JPEG[8] |
9 | 內部顏色轉換 (FF F8 LSE擴充標記) |
color_transform | JPEG 9 Lossless Coding[9] InfAI JPEG Development Site (頁面存檔備份,存於網際網路檔案館)[10] |
圖例: | 舊版本 | 目前版本 |
---|
時間線
編輯復刻
編輯比較著名的復刻是libjpeg-turbo,它最佳化了執行的速度;還有mozjpeg,它的最佳化目標是更小的檔案大小。除了這些以外,還有一個出自國際標準化組織(ISO)的libjpeg,其目的是所有JPEG 1標準的完整實現。[11]
libjpeg-turbo
編輯開發者 | libjpeg-turbo專案 |
---|---|
首次發布 | 2010年 |
目前版本 | 3.0.0, 2023年7月3日 |
網站 | libjpeg-turbo |
libjpeg-turbo是libjpeg的一個復刻,它採用單指令流多資料流(SIMD)指令來加速JPEG編碼和解碼基礎效率。許多專案現在使用libjpeg-turbo而不是libjpeg,包括流行的GNU/Linux發行版(Fedora、Debian、Mageia、OpenSUSE等)、Mozilla和Chrome。[12][13][14]除了效能方面,部分專案也因它允許向後保留與舊的libjpeg v6b版本的ABI相容性而選擇使用libjpeg-turbo。[15]libjpeg v7、v8和v9已打破與早期版本的ABI相容性。[16]
libjpeg-turbo可以組態為與libjpeg v7或v8 ABI相容,但,但它並沒有實現IJG近期發布的完整的功能集,包括SmartScale格式的副檔名。[17][18]因此,通過libjpeg v8和之後版本建立的SmartScale檔案將不能被libjpeg-turbo正確解壓。
mozjpeg
編輯開發者 | Mozilla Research |
---|---|
首次發布 | 2014年3月4日 |
目前版本 | 4.0.3,2021年2月26日[19] |
網站 | github |
mozjpeg是由Josh Aas和其他Mozilla Research人員完成的libjpeg-turbo的一個復刻。它旨在通過減少檔案大小(約10%)來加快網頁的載入時間,以及在不改變圖像品質的前提下提高編碼效率。為達到此目的,它在編碼(不對稱)方面使用更多處理能力,同時保持與JPEG標準的完全相容性,不需要在解碼器側做任何改變。它實際通過最佳化霍夫曼編碼樹完成。
除了libjpeg-turbo,mozjpeg版本也建立在jpegcrush之上,這是Loren Merritt編寫的一個Perl指令碼。[20][21]
參見
編輯參考資料
編輯- ^ JPEG JFIF. [2017-03-17]. (原始內容存檔於2020-11-09).
- ^ Jpegcrop Preferences and Options description. [2017-03-17]. (原始內容存檔於2020-07-11).
- ^ Filmic Games >> The greatest failure of our patent system was.... [2017-03-17]. (原始內容存檔於2012-09-01).
- ^ 680385 - Firefox does not show arithmetic coded jpegs. [2017-03-17]. (原始內容存檔於2019-03-10).
- ^ New jpegtran features. [2017-03-17]. (原始內容存檔於2020-11-09).
- ^ JPEG homepage. [2017-03-17]. (原始內容存檔於2014-11-29).
- ^ Contributed document - Word .doc file: ITU-T JPEG-Plus Proposal R3 (頁面存檔備份,存於網際網路檔案館)
- ^ Contributed document - Word .doc file: Evolution of JPEG (頁面存檔備份,存於網際網路檔案館)
- ^ Contributed document - Word .doc file: JPEG 9 Lossless Coding (頁面存檔備份,存於網際網路檔案館)
- ^ News c't magazine 2012 issue 18 page 43, Software Links (頁面存檔備份,存於網際網路檔案館)
- ^ 存档副本. [2017-03-17]. (原始內容存檔於2020-11-16).
- ^ Software That Uses or Provides libjpeg-turbo (頁面存檔備份,存於網際網路檔案館). February 9, 2012.
- ^ Issue 48789 – chromium – Use libjpeg-turbo instead of libjpeg (頁面存檔備份,存於網際網路檔案館). April 14, 2011.
- ^ Bug 698519 – Update to libjpeg-turbo 1.2 (頁面存檔備份,存於網際網路檔案館). February 28, 2012
- ^ libjpeg for F14 (頁面存檔備份,存於網際網路檔案館). February 9, 2012.
- ^ libjpeg: API changes/compatibility (頁面存檔備份,存於網際網路檔案館). February 9, 2012
- ^ libjpeg-turbo README file. [2017-03-17]. (原始內容存檔於2014-08-12).
- ^ What About libjpeg v9?. libjpeg-turbo team. [February 8, 2013]. (原始內容存檔於2020-11-12).
- ^ Releases · mozilla/mozjpeg. github.com. [2021-04-14]. (原始內容存檔於2022-05-07).
- ^ André Kramer (heise.de-Newsticker), January 14, 2013: Mozilla-Encoder verbessert JPEG-Kompression (頁面存檔備份,存於網際網路檔案館)
- ^ Andreas Donath (golem.de), March 6, 2014: Mozilla will JPEGs besser komprimieren (頁面存檔備份,存於網際網路檔案館)
參照錯誤:在<references>
標籤中name屬性為「libjpeg-turbo」的參考文獻沒有在文中使用
參照錯誤:在<references>
標籤中name屬性為「ijg-is-back」的參考文獻沒有在文中使用
參照錯誤:在<references>
標籤中name屬性為「SmartScale」的參考文獻沒有在文中使用
參照錯誤:在<references>
標籤中name屬性為「v8review」的參考文獻沒有在文中使用
參照錯誤:在<references>
標籤中name屬性為「mozjpeg2」的參考文獻沒有在文中使用
<references>
標籤中name屬性為「CloudFlare」的參考文獻沒有在文中使用外部連結
編輯- Official website of the Independent JPEG Group(英文)
- JPEG FAQs (頁面存檔備份,存於網際網路檔案館)(英文)
- JPEGclub (頁面存檔備份,存於網際網路檔案館)(英文) – 為libjpeg提供額外特性
- libjpeg面向Windows的二進制包 (頁面存檔備份,存於網際網路檔案館)(英文)(代管於SourceForge.net上的GnuWin32中)
- libjpeg-turbo (頁面存檔備份,存於網際網路檔案館)(英文),一個ABI及API相容的libjpeg的復刻,它使用x86 SIMD指令實現參考實現的大幅加速。
- GitHub上的mozjpeg - filesize-optimising復刻(英文)
- Josh Aas, Robert Nyman; August 2014: 使用mozjpeg建立高效JPEG (頁面存檔備份,存於網際網路檔案館)(英文) – mozjpeg的實用性概述
- 關於JPEG的那點事兒 (頁面存檔備份,存於網際網路檔案館)(簡體中文),2016/02/21