c++ - 如何在 Qt 中保存图像而无需手动添加 .jpeg 或 .png 扩展名?
问题描述
我想将图像保存到光盘,用户可以选择将其保存为 .png 或 .jpeg。如果我将图像名称设置为 img.jpeg,则当 FileDialog 弹出时,它可以工作,但如果我将其设置为 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);
}
推荐阅读
- time-series - 基于概率的股票价格分类
- laravel - 使用 Laravel 对所有结果进行排序
- ruby-on-rails - 如何在 Rails 上使用 axlsx 在不同的侧面添加不同颜色的边框?
- javascript - 在网格中垂直堆叠控件?
- amazon-web-services - 使用 SQS 扩展 AWS Lambda
- android - Android Studio 3.2.1 中的 NDK 错误是否有任何解决方案
- mysql - 错误:找不到与列列表 mysql 匹配的 FULLTEXT 索引
- google-apps-script - 如何将一行转移到另一个选项卡以便在 googlesheet 中存档
- python - 形状不显示在窗口上
- python - 请问,我如何解决管理员的验证错误(“”值必须是整数)