PNG格式压缩算法升级探讨:Zstandard与LZ4替代Deflate

本文讨论了在PNG格式中使用Zstandard或LZ4等现代压缩算法替代传统Deflate的可行性,涉及技术实现、性能对比及兼容性考量,旨在提升图像处理速度。

考虑使用Zstandard和/或LZ4替代Deflate

问题描述
PNG格式当前面临的挑战之一是读写速度较慢。目前存在无专利问题的开源无损编解码器,如Facebook维护的Zstandard或LZ4:

Zstandard已被Khronos KTX2 GPU纹理格式规范采用。建议在未来的PNG版本中将其作为可选方案。可能的加速效果显著,对于在数据处理流水线中频繁读写PNG的用户来说,这将带来高价值的改进。

还有其他更简单但更快的编解码器正在开发中,例如.QOI,但使用这些可能需要在压缩前更改或不进行图像过滤:
https://news.ycombinator.com/item?id=29328750

讨论与反馈

  • 该提议虽有趣,但会导致与现有图像创建和显示软件完全不兼容,是一项重大工作项。
  • 现有文件格式允许额外的压缩/过滤方法,新方法可添加到PNG 2.0标准中,类似于JPEG XL的处理方式。
  • Brotli也是一个流行选择,用于WOFF2字体,并已被现代浏览器支持作为Content-Encoding。
  • Zstandard/ZSTD是更好的选择,因为它已被Chrome/Firefox支持,且解压速度极快,甚至快于使用数十年的gzip。
  • 使用任何新压缩算法的PNG实际上将成为一个新的不兼容格式,可能需要不同的名称和MIME类型(例如PNG2和image/png2),以区别于标准PNG。
  • 如果目标是提高解码/编码吞吐量而牺牲与现有解码器的兼容性,则应扩大候选编解码器的范围。

当前状态
该问题已被添加到“未来版本考虑”里程碑,并需要已解决的讨论。团队对此想法持开放态度,但需要看到用户兴趣——即广泛或被主要参与者使用的实现。呼吁社区展示其被广泛或主要参与者使用的情况。

相关链接

  • 性能数据点:https://github.com/catid/Zpng
  • 无损图像编解码器吞吐量/压缩比分析:https://www.lossless-benchmarks.com/

标签
backwards-incompatible, enhancement, New feature or request, needs resolved discussion

里程碑
Future edition considerations

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计