0

我的应用程序尝试根据 exif 数据旋转图像。

我不断收到有关 jpegtran 的请求,抱怨“顺序 jpeg 的 SOS 参数无效”和 jhead 中止操作。显然这甚至不是一个致命的警告,许多论坛都给出了如何忽略它的说明?

顺序 JPEG 的 SOS 参数无效

关于如何让 jpegtran 完全忽略此警告并无论如何处理图像的任何想法?我对这里的示例图像有疑问 https://github.com/savolai/JPEG-Autorotate/issues/1

我已经想过首先使用 jpegtran 将图像转换为非渐进式,但即使在那时它也会抱怨并拒绝这样做。.\jpegtran.exe .\testimages\invalid-sos-parameters-progressive-jpeg\20180516_14530 8.jpg > .\testimages\invalid-sos-parameters-progressive-jpeg\nonprog.jpg

有谁知道任何其他二进制文件或让 jpegtran.exe 忽略错误的方法?或者你知道 mozjpeg jpegtran 对此是否更宽松?

https://github.com/mozilla/mozjpeg/blob/master/BUILDING.md

4

1 回答 1

1

我怀疑问题的根源是 SOS 标记中的光谱选择字段设置为零。这些字段在顺序 JPEG 中没有意义,但标准规定这些值应设置为 0 和 63。在 Internet 上看到的一些 JPEG 参考资料说这些值被忽略。可能有些编码器没有设置它们。

您可能希望在图像上运行 JPEG 转储程序,以查看您的光谱选择值是否设置为 0 和 63。如果不是,您可以编写一个相对简单的过滤器程序,在更改光谱选择值的同时复制 JPEG 流.

我希望 JPEGTRAN 源代码是在线的。如果我是正确的,它正在做这个不必要的检查,你可以构建你自己的版本,并把它注释掉。

于 2018-12-07T20:18:27.647 回答