#include "mainwindow.h"
#include <QPushButton>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QFileDialog>
#include <QMessageBox>
#include <poppler-qt5.h>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, m_btn(new QPushButton("生成"))
, m_mainWdg(new QWidget(this))
, m_edtSelect(new QLineEdit())
, m_btnSelect(new QPushButton("选择视频路径"))
, m_layoutSelect(new QHBoxLayout())
, m_edtSave(new QLineEdit())
, m_btnSave(new QPushButton("图片保存路径"))
, m_layoutSave(new QHBoxLayout())
, m_layoutMain(new QVBoxLayout())
{
initUI();
initConnect();
}
MainWindow::~MainWindow()
{
}
void MainWindow::slotClickBtn()
{
QString filenamePath=m_edtSelect->text();
if(filenamePath.isEmpty()){
QMessageBox::information(this,"提示","未选择文件");
return;
}
if(m_edtSave->text().isEmpty()){
QMessageBox::information(this,"提示","未保存路径");
return;
}
QFileInfo fileinfo =QFileInfo(filenamePath);
QString fileName = fileinfo.fileName();
Poppler::Document* document = Poppler::Document::load(filenamePath);
uint now_time = QDateTime::currentDateTime().toTime_t();
for(int i = 0; i < document->numPages();i++){
Poppler::Page* pdfPage = document->page(i);
QImage image = pdfPage->renderToImage(600,600);
QString strSaveImageFileName = m_edtSave->text() + "/" + QString::number(now_time) + "_" + QString::number(i)+".png";
image.save(strSaveImageFileName);
}
QMessageBox::information(this,"提示","生成完毕");
}
void MainWindow::slotSelectPDF()
{
QString strFileName = QFileDialog::getOpenFileName();
m_edtSelect->setText(strFileName);
}
void MainWindow::slotSaveImg()
{
QString strPath = QFileDialog::getExistingDirectory();
m_edtSave->setText(strPath);
}
void MainWindow::initUI()
{
setMinimumWidth(500);
setWindowTitle("PDF转图片");
m_edtSelect->setDisabled(true);
m_layoutSelect->addWidget(m_edtSelect);
m_layoutSelect->addWidget(m_btnSelect);
m_layoutSave->addWidget(m_edtSave);
m_layoutSave->addWidget(m_btnSave);
m_layoutMain->addLayout(m_layoutSelect);
m_layoutMain->addLayout(m_layoutSave);
m_layoutMain->addWidget(m_btn);
m_mainWdg->setLayout(m_layoutMain);
setCentralWidget(m_mainWdg);
}
void MainWindow::initConnect()
{
connect(m_btn,&QPushButton::clicked,this,&MainWindow::slotClickBtn);
connect(m_btnSelect,&QPushButton::clicked,this,&MainWindow::slotSelectPDF);
connect(m_btnSave,&QPushButton::clicked,this,&MainWindow::slotSaveImg);
}
三雷科技
- 粉丝: 4w+
- 资源: 409
最新资源
- 基于粒子群算法的配网重构 Matlab编程 以配电网络中网损最小作为目标函数,通过粒子群算法求得使系统网损最小时的网络拓扑结构 注:下图为程序在IEEE33节点配网系统上的仿真结果图
- 基于MATLAB的火灾烟雾检测系统 可以识别视频和图像 有代码注释
- 电力电子matlab simulink仿真 仿真电路模型 单相 三相全桥整流电路仿真 单相 三相电压型全桥逆变电路仿真 升压、降压斩波电路仿真 boost-buck电路仿真 单相交流调压电路相控式、斩
- 西门子1200PLC控制加KPT1200触摸屏,污水处理厂自控项目实例,含一台200Smart200加触摸屏泵站程序画面 内含全套电气控制图纸 改建成已运行项目;所有应用均经过实际验证 应用包
- 基于VMD分解算法,可用于信号分解,故障诊断,数据预测和分类等研究领域 程序直接替EXCEL数据即可以实现功能 VMD分解中的惩罚因子和分解层数可以直接进行设置,程序内有详细的注释,拿来就可以直接
- 双向LLC变器模型,采用半桥结构,电路拓扑为LLC结构,注意不是CLLC 输出电压闭环控制,闭环控制采用变频控制 正反向运行效果如图所示 对称半桥结构和不对称半桥结构都有 联系请做备注 模型运行
- 威纶通程序,威纶通案例参考 威纶通触摸屏例子参考 60个实用小例子 欢迎界面跳转 配方查询 定时锁屏 曲线显示
- Matlab基于主成分分析的图像压缩和重建 主成分分析是统计学中的主成分分析方法 主成分分析方法从矩阵角度讲也称K-L变 使用PCA方法对图像进行压缩和重建的大致过程:PCA图像压缩和PCA图像重
- Comsol光子晶体光栅非对称传输
- GA和PSO优化RF的树数和叶子数,做多维输入单维输出拟合预测模型 程序内有详细注释,易于学习,直接替数据可用 可以出特征重要性排序图,真实值和预测值对比图,可打印多种评价指标 程序是MATL
- 内容:提出共享储能背景下微网运营商与用户聚合商间的 Stackelberg 博弈模型,在 MATLAB 平台上进行算例仿真,通过 Yalmip 工具与 CPLEX 求解器进行建模与求解,利用启发式算法
- 成熟模块式光伏并网逆变器资料 PCB 原理图 包含原理图,pcb,源码以及bom表 如下: 1) 功率接口板原理图和pcb,元器件明细表 2) 主控DSP板原理图(pdf);.元器件明细
- abaqus连续驱动摩擦焊接仿真,采用 ABAQUS 软件,建立了摩擦焊接过程的二维轴对称热力耦合计算模型 模型采用网格重画技术remesh以及网格求解变技术(map solution)来实现网格的
- MATLAB代码:计及源-荷双重不确定性的电厂日前鲁棒优化调度 关键词:电厂 微网调度 鲁棒调度 源荷不确定性 日前经济调度 参考文档:《含电动汽车和风电机组的发电厂竞价策略-杨甲甲》参考其
- 基于FPGA的Cortex-M3软核OV5640摄像头采集工程 实现基于FPGA的Cortex-M3软核基本SOC,系统外设包括GPIO和UART串口和OV5640摄像头,实现摄像头采集和HDMI接口
- 利用麻雀搜索算法SSA优化SVM的c和g,建立多列数据输入,单列数据输出的拟合预测建模,程序内注释详细,直接替数据就可以用,可以打印出多个常用的模型评价指标
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈