0
点赞
收藏
分享

微信扫一扫

Qt之QImage无法获取图片尺寸(宽和高)


这个问题应该很多人都遇到过,比如下面这张图片test.png

Qt之QImage无法获取图片尺寸(宽和高)_QFileInfo

    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"

举报

相关推荐

0 条评论