这个问题应该很多人都遇到过,比如下面这张图片test.png
QImage image(":/test.png");
qDebug()<<"current size:"<<image.width()<<image.height();
QFileInfo fi(":/test.png");
QString suffix=fi.suffix();
qDebug()<<"current suffix:"<<suffix;
打印
current size: 0 0
current suffix: "png"
原因是图片的后缀可能被修改过,通过如下方法能正确获取到尺寸
QImage image(":/test.png");
qDebug()<<"current size:"<<image.width()<<image.height();
QFileInfo fi(":/test.png");
QString suffix=fi.suffix();
qDebug()<<"current suffix:"<<suffix;
QString realSuffix=suffix;
QMimeDatabase mimeDataBase;
auto mimeType=mimeDataBase.mimeTypeForFile(fi,QMimeDatabase::MatchContent);
QString mimeTypeName=mimeType.name();
if(mimeTypeName=="image/jpg"||mimeTypeName=="image/jpeg"||mimeTypeName=="image/jpe")
{
if(!(suffix.contains("jpg",Qt::CaseInsensitive)||suffix.contains("jpeg",Qt::CaseInsensitive)||suffix.contains("jpe",Qt::CaseInsensitive)))
{
realSuffix="jpg";
QImage image(":/test.png",realSuffix.toStdString().c_str());
qDebug()<<"real size:"<<image.width()<<image.height();
qDebug()<<"real suffix:"<<realSuffix;
}
}
else if(mimeTypeName=="image/png")
{
if(!suffix.contains("png",Qt::CaseInsensitive))
{
realSuffix="png";
QImage image(":/test.png",realSuffix.toStdString().c_str());
qDebug()<<"real size:"<<image.width()<<image.height();
qDebug()<<"real suffix:"<<realSuffix;
}
}
打印
current size: 0 0
current suffix: "png"
real size: 810 1080
real suffix: "jpg"