查看完整版本: [-- Not a JPEG file: starts with 0x89 0x50 --]

QTCN开发网 -> Qt QML开发 -> Not a JPEG file: starts with 0x89 0x50 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

binxuan7 2018-03-06 22:45

Not a JPEG file: starts with 0x89 0x50

在用qml的image加载图片时有的正确显示了,但有的出现这个错误,

Not a JPEG file: starts with 0x89 0x50
qrc:/main.qml:136:25: QML Image: Error decoding: file:///D:/pictured/picture/1.jpg: Unable to read image data


我查了一下貌似是PNG的文件,后缀被错误的改成了JPG,图片量很多,手动修改错误的图片格式部现实,请问各位大大有什么办法吗?

linker 2018-03-07 16:15
写个程序,用图片类读取文件夹里所有文件,如果load失败则修改后缀。应该可以吧

binxuan7 2018-03-08 18:56
linker:写个程序,用图片类读取文件夹里所有文件,如果load失败则修改后缀。应该可以吧 (2018-03-07 16:15) 

我也想过,可就是怕出现,多种情况,jpg文件后缀错写成了PNG,PNG错误的写成了JPG,JPG错误的写成GIF等等,QT貌似缺乏判断实际格式的功能

binxuan7 2018-03-11 23:37
已经成功解决问题,我写了个判断格式的函数,如有相同问题的可以看一下
QString PicModel::returnRealFormat(QString path,QString suffix){//suffix代表路劲
    QFile file(path);
    file.open(QIODevice::ReadOnly);
    QByteArray ba;
    ba=file.readAll();
    file.close();
    char c;
    QString s;
    for(int i=0;i<2;i++)
    {
        c=ba.at(i);
        s.append(c);
    }
    qDebug()<<s[0]<<s[1];
    qDebug()<<s;
    if(s=="GI")
    {
        qDebug()<<"格式:GIF";
        return "gif";
    }
    if(s=="\uffff\uffd8")
    {
        qDebug()<<"格式:JPG";
        return "jpg";
    }
    if(s=="\uff89P")
    {
        QFileInfo finfo(path);
        if(suffix!="png")/
        {
            qDebug()<<"格式修改成功";
             file.rename(finfo.baseName()+"png");//调用rename函数修改文件后缀
        }
        qDebug()<<"格式:PNG";
        return "png";
    }
    if(s=="BM")
    {
        qDebug()<<"格式:BMP";
        return "bmp";
    }
    if(s=="MM")
    {
        qDebug()<<"格式:TIFF";
        return "tiff";
    }
    if(s=="P6")
    {
        qDebug()<<"格式:PPM";
        return "ppm";
    }
    if(s=="P5")
    {
        qDebug()<<"格式:PGM";
        return "pgm";
    }
    if(s=="p4"){
        qDebug()<<"格式:PBM";
        return "pbm";
    }
    return "other";
}


查看完整版本: [-- Not a JPEG file: starts with 0x89 0x50 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled