【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn't expect more than one scan

1、问题描述

在使用QPixmap加载图片时失败,错误信息如下

Corrupt JPEG data: premature end of data segment
Didn't expect more than one scan

使用QPicture加载时错误信息如下:
QPicturePaintEngine::checkFormat: Incorrect header
QPicturePaintEngine::checkFormat: Incorrect header
QPicturePaintEngine::checkFormat: Incorrect header

2、原因分析

错误信息直译是:数据段过早结束,没想到会有不止一次的扫描!
大部分的原因是图片文件不完整或者图片在传输、复制等操作时数据意外更改。
如下图:原图经过网络传输时,发生错误,导致加载失败。
【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn't expect more than one scan_第1张图片
注意: 大部分预览图片的软件,都错误有冗余,可以打开图片,有的不行(比如,极速看图)

3、解决方法

绝大部分是因为图片文件损害;
如果想有一定的冗余,可以继续打开,显示正常的部分,可以参见
IJG JPEG库运行时错误:Corrupt JPEG data 的解决方案

你可能感兴趣的:(Qt)