Libjpeg
libjpeg是一个完全用 C 語言編寫的處理 JPEG 圖像資料格式的自由函式庫。伊包括一个 JPEG 編解碼器的演算法實現,以及用於處理 JPEG 資料的濟種實用程式。
愛囊軟體採用 C 語言編寫,並分發做附有原始碼的自由軟體,採用自訂的冗(類 BSD)自由軟體許會當證,權利要求為署名。原頭版本由獨立 JPEG 工作群組(IJG)維護佮發佈。此外,嘛有數個提供額外特性的分叉(Fork)。
JPEG JFIF 圖像佇全球的資訊網頂被廣泛使用。伊會使調整壓縮量級以實現檔案大細佮視覺品質之間的向望佮權衡。
實用程式
落實用程式隨在 libjpeg 提供:
- cjpeg 和 djpeg:用佇咧 JPEG 佮其他的流行的圖檔格式之間的轉換。
- rdjpgcom 和 wrjpgcom:用於在 JPEG 檔案中插入佮提文字注釋。
- jpegtran:用於在的無仝 JPEG 格式之間進行無失真轉換的工具。
jpegtran
命令列介面 jpegtran 提供幾種的功能提供,用佇重新格式化佮重新編碼 DCT 係數的表示,分別用佇轉換實際圖像數據佮挕捒 JPEG 檔案中的輔助數據。關於係數表示的變換包括:
- 優化 JPEG 檔案的霍夫曼編碼層以增加壓縮。
- 漸漸進和順序 JPEG 格式之間的轉換。
- 霍夫曼和算術編碼佇咧1626編碼法層之間的轉換。
這个轉變攏是完全無損而且洘旱的。對圖像數據的轉換包括:
- 咧消除某一寡圖像程式插入去的非標準應用程式特定數據,
- 對檔案執行某一寡轉換,比如講:
- 挕捒色水通道(轉換做灰階),
- 轉踅佮改變九十度,
- 鉸圖像塊爿框(八 × 八抑十六 × 十六像素),
- 共遮的是非常破壞性的資料壓縮並且對保留的圖樣數據是洘旱的。重複轉檔時無重新壓縮現有資料解決重複編碼 ( 修改 ) 對資料進行二改壓縮致使濟改化失真正問題有一个相關的 Windows 應用程式 Jpegcrop 為「jpegtran」提供一个使用者介面。對於 Linux 等類 Unix 系統,自由的 CropGUI 會當提供類似的功能。
真濟程式因為 IJG 的代碼支援 JPEG 無真轉換功能,部份名單見 Lossless Applications List(英文)。
歷史
獨立 JPEG 工作群組(IJG)的 JPEG 實現頭一改公開發布於七 October 一千九百九十一,並佇彼是不止仔完整。 開發主要是由 Tom Lane 完成。 IJG 的開源是其中一个主要的開源包,並且是 JPEG 標準的成功的關鍵。濟濟公司共伊整合到各種的產品內底,親像編輯器佮網路瀏覽器。
版本五發布佇一九九四年九月二四,規个代碼庫予人重寫。伊引入名做 rdjpgcom 和 wrjpgcom 的實用程式有處理1875入去的文字的注釋。
版本六於二 August 一千九百九十五到來,支援漸漸進 JPEG 佮頭一版 jpegtran 實用程式。
摘要
時間線
復刻
較出名的復刻是 libjpeg-turbo,伊最佳化了執行的速度;閣有 mozjpeg,伊的最佳化目標是更加細的檔案大細。除了遮的以外,閣有一个出自國際標準化組織(ISO)的 libjpeg,其目的是所有 JPEG 一標準的完整實現。
libjpeg-turbo
libjpeg-turbo 是 libjpeg 的一个復刻,伊採用單指令流多資料流(SIMD)指令來加速 JPEG 編碼佮解碼基礎效率。真濟專案這馬使用 libjpeg-turbo 毋是 libjpeg,包括流行的 GNU / Linux 發行版(Fedora、Debian、Mageia、OpenSUSE 等)、 Mozilla 和 Chrome。除了效能方面,部份的專案也因為伊允准向後保留佮舊的 libjpeg v 六 b 版本的 ABI 相容性來選擇使用 libjpeg-turbo。libjpeg v 七、v 八佮 v 九已經拍破佮早期版本的 ABI 相容性。
libjpeg-turbo 會當組態做與 libjpeg v 七或者是 v 八 ABI 相容,猶毋過,但是伊並無實現 IJG 近期發佈的完整的功能集,包括講 SmartScale 格式的副檔名。所以,通過 libjpeg v 八和了後版本建立的 SmartScale 檔案將袂當予人 libjpeg-turbo 正確解壓。
mozjpeg
mozjpeg 是由 Josh Aas 佮其他 Mozilla Research 人員完成的 libjpeg-turbo 的一个復刻。伊旨咧通過減少檔案大細(差不多百分之十)來加快網頁的載入時間,趕緊佇無改變圖像品質的進前提懸編碼效率。欲達到這个此目的,伊咧編碼(毋是稱)方面使用閣較濟處理能力,同時保持和 JPEG 標準的完全相容性,無需要佇解碼器邊做任何的改變。伊實際通過最佳化霍夫曼編碼樹仔完成。
除了 libjpeg-turbo,mozjpeg 版本嘛建立佇咧 jpegcrush 之上,這是 Loren Merritt 編寫的一个 Perl 指令碼。
參見
- JPEG
- 無失真的資料壓縮 # 無失真編輯
- 有損資料壓縮
參考資料
外部連結
- Official website of the Independent JPEG Group(英文)
- JPEG FAQs(英文)
- JPEGclub(英文)– 為 libjpeg 提供額外的特性
- libjpeg 面向 Windows 的二進位包(英文)(代管於 SourceForge . net 上的 GnuWin 三十二中間)
- libjpeg-turbo(英文), 一个 ABI 佮 API 相容的 libjpeg 這个復刻,伊使用 x 八十六 SIMD 指令實現參考實現的大幅加速。
- GitHub 上的 mozjpeg-filesize-optimising 復刻(英文)
- Josh Aas , Robert Nyman ; August 二千空一十四:使用 mozjpeg 建立高效 JPEG(英文)– mozjpeg 的實用性概述
- 關於著 JPEG 的彼點事兒(簡體中文), 二分之二千空一十六 / 二十一