如何在Qt中保存图像而不必手动添加.jpeg或.png扩展名



我想将图像保存到光盘,用户可以选择将其保存为.png或.jpeg。当弹出FileDialog时,如果我将图像名称设置为img.jpeg,它可以工作,但如果我仅将其设置为img,它就不会保存。我该如何修复它?

QImage image;
QString imagePath = QFileDialog::getSaveFileName( this,tr("Save File"),"", tr("JPEG (*.jpg *.jpeg);;PNG (*.png)" ));
QPixmap pm =ui->label2->pixmap();
if (!pm.isNull() && !imagePath.isEmpty() )
{
image =pm.toImage() ;
image.save(imagePath);
}

一个可能的解决方案是检查它是否有扩展,如果没有,则添加扩展:

const QStringList validSuffixes({"png", ".jpg"})
QString imagePath = QFileDialog::getSaveFileName(this, tr("Save File"),"", tr("JPEG (*.jpg *.jpeg);;PNG (*.png)" ));
QPixmap pm =ui->label2->pixmap();
if (!pm.isNull() && !imagePath.isEmpty()){
QFileInfo info(imagePath);
if(!validSuffixes.contains(info.suffix())){
imagePath = info.baseName() + ".jpg";
}
pm.save(imagePath);
}

最新更新