【问题标题】:Using jpegtran to rotate progressive jpegs: invalid SOS parameter for sequential jpeg使用 jpegtran 旋转渐进式 jpeg:顺序 jpeg 的 SOS 参数无效
【发布时间】:2019-05-05 04:13:35
【问题描述】:

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

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

Invalid SOS parameters for sequential JPEG

关于如何让 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

【问题讨论】:

    标签: c jpeg exif autorotate jpegtran


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。原来 jpegtran 实际上正在处理图像,只给出 2 作为返回值。但是调用它的 jhead 正在基于此中止。所以我创建了自己的二进制文件来为每个文件获取正确的 exif 旋转值并调用 jpegtran 并允许 2 作为返回值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多