热门问题
时间线
聊天
视角

Libjpeg

JPEG圖片的C程式碼語言函式庫 来自维基百科,自由的百科全书

Libjpeg
Remove ads

libjpeg是一个完全用C语言编写的处理JPEG图像数据格式的自由函数库。它包含一个JPEG编解码器的算法实现,以及用于处理JPEG数据的多种实用程序。

事实速览 开发者, 首次发布 ...

该套软件采用C语言编写,并分发为附有源代码自由软件,采用自定义的宽松类BSD)自由软件许可证,权利要求为署名英语attribution (copyright)。原始版本由独立JPEG工作组(IJG)维护和发布。此外,也有数个提供额外特性的分叉(Fork)

JPEG JFIF图像在万维网上被广泛使用。它可以调整压缩量级以实现文件大小与视觉质量之间的期望与权衡。[1]

Remove ads

实用程序

下列实用程序随libjpeg提供:

  • cjpeg和djpeg:用于JPEG与其他流行的图像文件格式之间的转换。
  • rdjpgcom和wrjpgcom:用于在JPEG文件中插入和提取文字注释。
  • jpegtran:用于在不同JPEG格式之间进行无损转换的工具。

jpegtran

Thumb
jpegtran无需重新编码即可转换JPEG数据(这里有用户界面CropGUI)

命令行接口 jpegtran提供了几种功能,用于重新格式化和重新编码DCT系数的表示,分别用于转换实际图像数据和丢弃JPEG文件中的辅助数据。 关于系数表示的变换包括:

这些转变都是完全无损且可逆的。 对图像数据的转换包括:

  • 消除某些图像程序插入的非标准应用程序特定数据,
  • 对文件执行某些转换,例如:
    • 丢弃颜色通道(转换为灰阶),
    • 旋转和翻转英语flipped image90度,
    • 裁剪图像块边框(8×8或16×16像素),
    • 缩放[5]

这些是非破坏性资料压缩并且对于保留的图像数据是可逆的。重复转换时不重新压缩现有资料解决重复编码(修改)对资料进行二次压缩导致多次量化失真英语generation loss的问题

有一个相关的Windows应用程序Jpegcrop页面存档备份,存于互联网档案馆)为“jpegtran”提供了一个用户界面。对于Linux类Unix系统,自由的CropGUI页面存档备份,存于互联网档案馆)能提供类似功能。 许多程序基于IJG的代码支持JPEG无损转换功能,部分名单见Lossless Applications List页面存档备份,存于互联网档案馆(英文)

Remove ads

历史

独立JPEG工作组(IJG)的JPEG实现首次公开发布于7 October 1991,并在那是已相当完善。 开发主要由Tom Lane英语Tom Lane (computer scientist)完成。 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-turbo是libjpeg的一个复刻,它采用单指令流多数据流(SIMD)指令来加速JPEG编码和解码基础效率。许多项目现在使用libjpeg-turbo而不是libjpeg,包括流行的GNU/Linux发行版(FedoraDebianMageiaOpenSUSE等)、MozillaChrome[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

事实速览 开发者, 首次发布 ...

mozjpeg是由Josh Aas和其他Mozilla Research人员完成的libjpeg-turbo的一个复刻。它旨在通过减少文件大小(约10%)来加快网页的加载时间,以及在不改变图像质量的前提下提高编码效率。为达到此目的,它在编码(不对称)方面使用更多处理能力,同时保持与JPEG标准的完全兼容性,不需要在解码器侧做任何改变。它实际通过优化霍夫曼编码树完成。

除了libjpeg-turbo,mozjpeg版本也建立在jpegcrush之上,这是Loren Merritt编写的一个Perl脚本。[20][21]

Remove ads

参见

参考资料

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads