查看完整版本: [--
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