如何使用 libjpeg-turbo 解码 JPEG9 图像?

Posted

技术标签:

【中文标题】如何使用 libjpeg-turbo 解码 JPEG9 图像?【英文标题】:How to use libjpeg-turbo to decode JPEG9 Image? 【发布时间】:2016-11-23 11:13:43 【问题描述】:

我正在使用 android 6.0 进行一些开发。现在我想使用 libjpeg-turbo 来解码相机在本机 C++ 代码中拍摄的 JPEG 图像(JPEG9 图像)。但是,libjpeg-turbo 只能支持 JPEG 8。所以 libjpeg-turbo 会报错为“错误的 jpeg 库版本”。有谁知道如何解决这个问题?

其实我现在是用OpenCV的函数imdecode来做这个工作的,但是太慢了。有人说 OpenCV 在 imdecode 和 imencode 中使用 libjpeg。这是真的吗?

如果我不能使用 libjpeg-turbo,我还能用什么来高效地解码和编码 JPEG9 图像?

感谢任何帮助!

【问题讨论】:

【参考方案1】:

Libjpeg-turbo 故意不支持带有来自 libjpeg v9 fork 扩展的图像,因为它们是非标准的,并且不提供比来自符合标准的 libjpeg 版本的图像更好的压缩:

https://libjpeg-turbo.org/About/Jpeg-9

所以答案是你无法解码它们。您可以做的最好的事情是避免使用 libjpeg v9,或者如果必须,请务必禁用所有 SmartScale 扩展以生成与 JPEG 兼容的文件。

【讨论】:

以上是关于如何使用 libjpeg-turbo 解码 JPEG9 图像?的主要内容,如果未能解决你的问题,请参考以下文章

windows7 64位机上,libjpeg-turbo的安装和使用

如何将 libjpeg-turbo Android NDK 添加为静态库

如何让 libjpeg-turbo 的 java 包装器实际压缩?

windows 10上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on windows 10

Go初接触之libjpeg-turbo

Ubuntu16.06编译libjpeg-turbo库