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

时间:2018-12-03 20:00:05

标签: c jpeg exif autorotate jpegtran

我的应用尝试基于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

1 个答案:

答案 0 :(得分:0)

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

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

我希望JPEGTRAN源代码在线。如果我对它进行了不必要的检查是正确的,则可以在注释掉的情况下构建自己的版本。