QCamera的使用方法,包含截图并且保存图片等简单功能
2014-10-18 22:39
204 查看
Qt5.0版本的QMultimedia包含了许多有媒体相关的类,QCamera类用于打开系统的摄像头设备,QCameraViewfinder用于显示捕获的视频,QCameraImageCapture用于截图。
在使用QCamera相关的类时,一定要在项目配置文件.pro中加入:
QT+=multimedia
以下的示例演示了QCamera的使用方法,包含截图并且保存图片等简单功能:
程序源代码:
(1)头文件mainwindow.h
#ifndefMAINWINDOW_H
在使用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);
}
}
相关文章推荐
- Android最简单的图片裁剪方法,非使用系统裁切功能
- XNA Game Studio是一套有着强大功能和简单界面的游戏制作平台,游戏开发商和游戏玩家都可以使用这套工具开发针对Windows XP以及Xbox360的游戏,XNA Game Studio分为两种版本,一种是面向初学者的EXPRESS版本,还有一种是面向专业用户的专业版。用户使用EXPRESS版本开发游戏完全免费,并且可以随意在PC上发行,不过用该工具开发的游戏若是在360上网络发行,就需要交纳99美元的年费。
- 使用 StateServer 保存 Session 解决 Session过期,登陆过期问题,最简单的方法。
- Jquery Jcrop 插件java的使用方法 包括图片保存类
- gentoo设置最简单的截图和图片浏览功能
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 使用UIScrollView和UIPageControl实现一个简单的图片浏览功能
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- android两种使用照相功能获取图片的方法
- 使用jQuery简单实现产品展示的图片左右滚动功能
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- TEECHART使用TEXTOUT标注后,保存图片的方法?
- 使用 Raphael js 和JSON 来实现具备保存功能的简单的仿QQ秀
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- web中,如何读取Word内容(包含表格,但不包含图片)并且显示在页面中或保存进数据库中
- 今天又学会了一种使用插件的新方法,并且学着作了个简单的插件。
- cf截图的简单方法及保存位置
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js
- 用户体验超棒并且功能强大使用简单的javascript表单验证 - Parsley.js