基于 Qt 的可视化图片处理程序——图片的加载与保存

这篇具有很好参考价值的文章主要介绍了基于 Qt 的可视化图片处理程序——图片的加载与保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于 Qt 的可视化图片处理程序——图片的加载与保存

图片的加载

点击按钮选择文件

首先要确定,使用 Qt 中 QFileDialog 库中的 getLoadFile 进行选择文件。

代码如下:文章来源地址https://www.toymoban.com/news/detail-564848.html

LoadPicPath = QFileDialog::getOpenFileName(this,"选择图片","C://Users//ppqpp//Pictures","Pic Files (*.jpg;*.jeg;*.png;*.gif);;All Files (*);");
// getOpenFile 参数包含窗口的父类,窗口名称,默认选择地址,和要选择的文件格式
// 设置文件扩展名过滤,注意用双分号间隔

运行效果如下:

qt 加载图片,qt,ui,开发语言

qt 加载图片,qt,ui,开发语言

图片加载到 Label

在 Qt 中,我们一种最常用的图片加载方式就是使用 QImage 库,此处我们通过 QImage 加载图片,之后通过加载到 QPixmap 中,最终显示在 Label 上

首先声明 QImage 变量,并加载我们指定路径下的图片:

QImage img;
    img.load(LoadPicPath);
    // LoadPicPath 是我们选择的文件的路径及名称

在成功加载图片之后,我们通过将图加载到 QPixmap 上,最终将图片显示在 Label 上:

image = img.scaled(this->ui->PicLabel->size(),Qt::KeepAspectRatio, Qt::SmoothTransformation);
/*
首先要按照比例合理缩放图片的大小,并且在缩放的过程中要保证图片不失帧
Qt::KeepAspectRatio 按比例缩放  Qt::SmoothTransformation 缩放不失帧
*/
QPixmap pixmap = QPixmap::fromImage(image);
// 在pixmap中加载图片
this->ui->PicLabel->setPixmap(pixmap)

// 将图片显示到 Label 中

运行效果如下:

qt 加载图片,qt,ui,开发语言

完整代码

void MainWindow::Load(){    // 加载图片
    QImage img;
    img.load(LoadPicPath);
    w_initial = img.width();
    h_initial = img.height();
    image = img.scaled(this->ui->PicLabel->size(),Qt::KeepAspectRatio, Qt::SmoothTransformation);
    pixmap = QPixmap::fromImage(image);
    // Qt::KeepAspectRatio 按比例缩放  Qt::SmoothTransformation 缩放不失帧
    this->ui->PicLabel->clear();
    this->ui->PicLabel->setPixmap(pixmap);
    this->getpixel();
}
    
    void MainWindow::on_actionLoadPic_triggered()    // 点击事件
{
    if(LoadPicPath == ""){
        if_load_save = false;
    }
    else{
        qDebug()<<LoadPicPath;
        if_load_save = true;
        qDebug()<<"if_load_save = "<<if_load_save;
    }
    LoadPicPath = QFileDialog::getOpenFileName(this,"选择图片","C://Users//ppqpp//Pictures","Pic Files (*.jpg;*.jeg;*.png;*.gif);;All Files (*);");
    if(if_load_save){
        savedialog->show();
        savedialog->exec();
    }
    else{
        //        this->init_all();
        this->Load();
    }
}

图片的保存

点击按钮保存路径

与加载图片的方法一致,使用 getSaveFile 函数选择要保存图片的路径:

MainWindow::SavePicPath = QFileDialog::getSaveFileName(this,"C://Users//ppqpp//Pictures",MainWindow::LoadPicPath,"Pic Files (*);");

运行效果如下:

qt 加载图片,qt,ui,开发语言

qt 加载图片,qt,ui,开发语言

保存图片

在保存图片之前,我们需要先提取要进行保存的目标图片,通过一种类似于截屏的方式 pixmap()->toImage() 对图片进行提取,然后缩放到原来的大小,最后进行保存

代码如下:

QImage img = this->ui->PicLabel->pixmap()->toImage().scaled(w_initial,h_initial,Qt::KeepAspectRatio, Qt::SmoothTransformation);
img.save(SavePicPath);

完整代码

void SaveDialog::on_pushButton_clicked()
{
    MainWindow::SavePicPath = QFileDialog::getSaveFileName(this,"C://Users//ppqpp//Pictures",MainWindow::LoadPicPath,"Pic Files (*);");
    this->ui->PathEdit->setText(MainWindow::SavePicPath);
}

void SaveDialog::on_SaveButton_clicked()
{
    qDebug()<<"Save new Pic"<<MainWindow::LoadPicPath;
    if(this->ui->PathEdit->text() != ""){
        emit to_save();
        if(MainWindow::if_load_save){
            qDebug()<<"if_load_save = "<<MainWindow::if_load_save;
            qDebug()<<"save_to_load";
            MainWindow::if_load_save = false;
            emit save_to_load();
        }
        this->close();
    }
}


void MainWindow::Cover_save(){
    qDebug()<<"Cover_save";
    QImage img = this->ui->PicLabel->pixmap()->toImage().scaled(w_initial,h_initial,Qt::KeepAspectRatio, Qt::SmoothTransformation);
    img.save(SavePicPath);
}

到了这里,关于基于 Qt 的可视化图片处理程序——图片的加载与保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析

    案例数据集是在线零售业务的交易数据,采用Python为编程语言,采用Hadoop存储数据,采用Spark对数据进行处理分析,并使用Echarts做数据可视化。由于案例公司商业模式类似新零售,或者说有向此方向发展利好的趋势,所以本次基于利于公司经营与发展的方向进行数据分析。

    2024年02月11日
    浏览(34)
  • 基于Python的海量豆瓣电影、数据获取、数据预处理、数据分析、可视化、大屏设计项目(含数据库)

    项目介绍 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主!!!!!!!!!! 本文基于Python的网络爬虫手段对豆瓣电影网站进行数据的抓取,通过合理的分析豆瓣网站的网页结构,并设计出规则来获取电影数据的JSON数据包,采用正态分布的延时措施

    2024年02月12日
    浏览(44)
  • PCL Visualizer可视化结果保存成图片、关闭可视化窗口

    内容: C++ PCLVisualizer可视化的结果保存成图片,并自动关闭可视化窗口。

    2024年02月13日
    浏览(26)
  • 编写web程序,基于echarts将Mysql表数据进行可视化展示及Hadoop学习心得

    文章目录 目录 前言 一、从MySQL数据库中获取需要展示的数据。 1.引入库 2.连接到MySQL数据库 二、创建图表 三、运行后结果展示 四、学习心得  总结         将Mysql表数据可视化展示在Web程序中可以借助ECharts这样的图表库来实现。通过Web程序连接MySQL数据库,获取数据后,

    2024年02月03日
    浏览(31)
  • 数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)

    录入进入房间的相关数据; 从进入时间开始计时,计算滞留房间的时间; 定时刷新数据,超过30分钟的人数,进行红色告警; 为了完整地实现上述需求,我们可以按照以下步骤开发: 前端页面设计 设计一个合适的前端页面,用于展示所有房间的信息,以及每个房间内的用户

    2024年02月08日
    浏览(33)
  • qt 可视化ui设计

    QMainWindow 是主窗口类,主窗口类具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口; QWidget是所有具有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持; QDialog是对话框类,可建立一个基于对话框的界面。 .ui 文件 后缀为.ui 的文件是可视化

    2024年02月15日
    浏览(34)
  • QT 1、开源一款可视化大屏源码

    之前也是苦于对可视化的界面开发无从下手,于是近期项目中的某一个环节需要,因此在网上查找了诸多案例,且基本上没有这一方面的案例,有的也是需要钱的,但是楼主今天帮你把这个价格打下来了,作为福利免费送给你们(有点带货主播的赶脚),在哔哩哔哩一个up主

    2023年04月08日
    浏览(30)
  • 【项目实战】基于Hadoop大数据电商平台用户行为分析与可视化系统Hive、Spark计算机程序开发

    注意:该项目只展示部分功能,如需了解,评论区咨询即可。 在当今数字化时代,电商行业成为全球商业生态系统的关键组成部分,电商平台已经深入各行各业,影响了人们的购物方式和消费习惯。随着互联网技术的不断发展,电商平台产生了大量的用户数据,包括点击、购

    2024年02月04日
    浏览(92)
  • Qt creator之对齐参考线——新增可视化缩进功能

    Qt creator随着官方越来越重视,更新频率也在不断加快,今天无意中发现qt creator新版有了对齐参考线,也称可视化缩进 Visualize Indent,默认为启用状态。 下图为旧版Qt Creator显示设置栏:  下图为新版本Qt Creator显示设置栏:  如下图,浅灰色竖线,就是对齐参考线,也叫可视化

    2024年02月12日
    浏览(33)
  • Qt Creator可视化交互界面exe快速入门1

    Qt的安装链接:Index of /archive/qt 5.14版本之前都是可以直接 离线安装,即下载完整安装包之后在本地安装。 最新及5,15版本之后的都不支持直接的离线安装了,需要通过下载器来进行安装。下载地址:Index of /official_releases/online_installers

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包