使用 jpegtran 旋转渐进式 jpeg:连续 jpeg 的 SOS 参数无效

Using jpegtran to rotate progressive jpegs: invalid SOS parameter for sequential jpeg

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

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

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

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

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

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

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

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

我希望 JPEGTRAN 源代码在线。如果我认为它正在进行不必要的检查是正确的,那么您可以构建自己的版本并将其注释掉。