热门问题
时间线
聊天
视角
Libjpeg
JPEG圖片的C程式碼語言函式庫 来自维基百科,自由的百科全书
Remove ads
libjpeg是一個完全用C語言編寫的處理JPEG圖像數據格式的自由函式庫。它包含一個JPEG編解碼器的算法實現,以及用於處理JPEG數據的多種實用程序。
該套軟件採用C語言編寫,並分發為附有源代碼的自由軟件,採用自定義的寬鬆(類BSD)自由軟件許可證,權利要求為署名。原始版本由獨立JPEG工作組(IJG)維護和發布。此外,也有數個提供額外特性的分叉(Fork)。
Remove ads
實用程序
下列實用程序隨libjpeg提供:
- cjpeg和djpeg:用於JPEG與其他流行的圖像文件格式之間的轉換。
- rdjpgcom和wrjpgcom:用於在JPEG文件中插入和提取文字注釋。
- jpegtran:用於在不同JPEG格式之間進行無損轉換的工具。

命令列介面 jpegtran提供了幾種功能,用於重新格式化和重新編碼DCT係數的表示,分別用於轉換實際圖像數據和丟棄JPEG文件中的輔助數據。 關於係數表示的變換包括:
這些轉變都是完全無損且可逆的。 對圖像數據的轉換包括:
這些是非破壞性資料壓縮並且對於保留的圖像數據是可逆的。重複轉檔時不重新壓縮現有資料解決重複編碼(修改)對資料進行二次壓縮導致多次量化失真的問題
有一個相關的Windows應用程序Jpegcrop (頁面存檔備份,存於網際網路檔案館)為「jpegtran」提供了一個用戶界面。對於Linux等類Unix系統,自由的CropGUI (頁面存檔備份,存於網際網路檔案館)能提供類似功能。 許多程序基於IJG的代碼支持JPEG無損轉換功能,部分名單見Lossless Applications List (頁面存檔備份,存於網際網路檔案館)(英文)。
Remove ads
歷史
獨立JPEG工作組(IJG)的JPEG實現首次公開發布於7 October 1991,並在那是已相當完善。 開發主要由Tom Lane完成。 IJG的開源是其中一個主要的開源包,並且是JPEG標準的成功的關鍵。許多公司將其整合到各種產品中,如圖像編輯器和網絡瀏覽器。[6]
版本5發布於1994年9月24日,整個代碼庫被重寫。它引入了名為rdjpgcom和wrjpgcom的實用程序用於處理嵌入的文字注釋。
版本6於2 August 1995到來,支持漸進JPEG和第一版jpegtran實用程序。
Remove ads


復刻
比較著名的復刻是libjpeg-turbo,它優化了執行的速度;還有mozjpeg,它的優化目標是更小的文件大小。除了這些以外,還有一個出自國際標準化組織(ISO)的libjpeg,其目的是所有JPEG 1標準的完整實現。[11]
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正確解壓。
Remove ads
mozjpeg是由Josh Aas和其他Mozilla Research人員完成的libjpeg-turbo的一個復刻。它旨在通過減少文件大小(約10%)來加快網頁的加載時間,以及在不改變圖像質量的前提下提高編碼效率。為達到此目的,它在編碼(不對稱)方面使用更多處理能力,同時保持與JPEG標準的完全兼容性,不需要在解碼器側做任何改變。它實際通過優化霍夫曼編碼樹完成。
除了libjpeg-turbo,mozjpeg版本也建立在jpegcrush之上,這是Loren Merritt編寫的一個Perl腳本。[20][21]
Remove ads
參見
參考資料
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads