您的位置:首页 > 其它

QCamera的使用方法,包含截图并且保存图片等简单功能

2014-10-18 22:39 204 查看
Qt5.0版本的QMultimedia包含了许多有媒体相关的类,QCamera类用于打开系统的摄像头设备,QCameraViewfinder用于显示捕获的视频,QCameraImageCapture用于截图。

在使用QCamera相关的类时,一定要在项目配置文件.pro中加入:

QT+=multimedia
QT+=multimediawidgets




以下的示例演示了QCamera的使用方法,包含截图并且保存图片等简单功能:



程序源代码:

(1)头文件mainwindow.h

#ifndefMAINWINDOW_H
#defineMAINWINDOW_H


#include


namespaceUi{

classMainWindow;

}


classQCamera;

classQCameraViewfinder;

classQCameraImageCapture;


classMainWindow:publicQMainWindow

{

Q_OBJECT


public:

explicitMainWindow(QWidget*parent=0);

~MainWindow();


privateslots:

voidcaptureImage();

voiddisplayImage(int,QImage);

voidsaveImage();


private:

Ui::MainWindow*ui;


QCamera*camera;

QCameraViewfinder*viewfinder;

QCameraImageCapture*imageCapture;

};


#endif//MAINWINDOW_H


(2)实现文件mainwindow.cpp

#include

#include

#include

#include

#include"mainwindow.h"

#include"ui_mainwindow.h"


MainWindow::MainWindow(QWidget*parent):

QMainWindow(parent),

ui(newUi::MainWindow)

{

ui->setupUi(this);


camera=newQCamera(this);

viewfinder=newQCameraViewfinder(this);

imageCapture=newQCameraImageCapture(camera);


ui->horizontalLayout_View->addWidget(viewfinder);

ui->label_Display->setScaledContents(true);


camera->setViewfinder(viewfinder);

camera->start();


connect(imageCapture,SIGNAL(imageCaptured(int,QImage)),this,SLOT(displayImage(int,QImage)));


connect(ui->pushButton_Capture,SIGNAL(clicked()),this,SLOT(captureImage()));

connect(ui->pushButton_Save,SIGNAL(clicked()),this,SLOT(saveImage()));

connect(ui->pushButton_Quit,SIGNAL(clicked()),qApp,SLOT(quit()));

}


MainWindow::~MainWindow()

{

deleteui;

}


voidMainWindow::captureImage()

{

ui->statusBar->showMessage(tr("正在捕获图片"),1000);

imageCapture->capture();

}


voidMainWindow::displayImage(int,QImageimage)

{

ui->label_Display->setPixmap(QPixmap::fromImage(image));

ui->statusBar->showMessage(tr("捕获成功"),5000);

}


voidMainWindow::saveImage()

{

QStringfileName=QFileDialog::getSaveFileName(this,tr("保存到文件"),QDir::homePath(),tr("jpeg格式文件(*.jpg)"));

if(fileName.isEmpty()){

ui->statusBar->showMessage(tr("保存操作已取消"),5000);

return;

}

constQPixmap*pixmap=ui->label_Display->pixmap();

if(pixmap){

pixmap->save(fileName);

ui->statusBar->showMessage(tr("保存成功"),5000);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐