本页内容

QImageCapture Class

QImageCapture 类用于录制媒体内容。更多内容...

标题: #include <QImageCapture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
继承自: QObject

公共类型

enum Error { NoError, NotReadyError, ResourceError, OutOfSpaceError, NotSupportedFeatureError, FormatError }
enum FileFormat { UnspecifiedFormat, JPEG, PNG, WebP, Tiff }
enum Quality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality }

属性

公共函数

QImageCapture(QObject *parent = nullptr)
virtual ~QImageCapture() override
void addMetaData(const QMediaMetaData &metaData)
QMediaCaptureSession *captureSession() const
QImageCapture::Error error() const
QString errorString() const
QImageCapture::FileFormat fileFormat() const
bool isAvailable() const
bool isReadyForCapture() const
QMediaMetaData metaData() const
QImageCapture::Quality quality() const
QSize resolution() const
void setFileFormat(QImageCapture::FileFormat format)
void setMetaData(const QMediaMetaData &metaData)
void setQuality(QImageCapture::Quality quality)
void setResolution(const QSize &resolution)
void setResolution(int width, int height)

公共插槽

int capture()
int captureToFile(const QString &file = QString())

信号

void errorChanged()
void errorOccurred(int id, QImageCapture::Error error, const QString &errorString)
void fileFormatChanged()
void imageAvailable(int id, const QVideoFrame &frame)
void imageCaptured(int id, const QImage &preview)
void imageExposed(int id)
void imageMetadataAvailable(int id, const QMediaMetaData &metaData)
void imageSaved(int id, const QString &fileName)
void metaDataChanged()
void qualityChanged()
void readyForCaptureChanged(bool ready)
void resolutionChanged()

静态公共成员

QString fileFormatDescription(QImageCapture::FileFormat f)
QString fileFormatName(QImageCapture::FileFormat f)
QList<QImageCapture::FileFormat> supportedFormats()

详细说明

QImageCapture 类是一个高级图像录制类。它并非旨在单独使用,而是用于访问其他媒体对象(如QCamera )的媒体录制功能。

QMediaCaptureSession captureSession;
camera = new QCamera;
captureSession.setCamera(camera);

viewfinder = new QVideoWidget;
viewfinder->show();
captureSession.setVideoOutput(viewfinder);

imageCapture = new QImageCapture;
captureSession.setImageCapture(imageCapture);

camera->start();
// on shutter button pressed
imageCapture->capture();

另请参阅 QCamera 。

成员类型文档

enum QImageCapture::Error

常数值描述
QImageCapture::NoError0无错误。
QImageCapture::NotReadyError1服务尚未准备好进行捕获。
QImageCapture::ResourceError2设备未就绪或不可用。
QImageCapture::OutOfSpaceError3设备空间已满。
QImageCapture::NotSupportedFeatureError4设备不支持静止图像拍摄。
QImageCapture::FormatError5当前格式不受支持。

enum QImageCapture::FileFormat

请从以下图像格式中选择一种:

常量值描述
QImageCapture::UnspecifiedFormat0未指定格式
QImageCapture::JPEG1.jpg 或.jpeg 格式
QImageCapture::PNG2.png 格式
QImageCapture::WebP3.webp 格式
QImageCapture::Tiff4.tiff 格式

enum QImageCapture::Quality

列举质量编码级别。

常量值
QImageCapture::VeryLowQuality0
QImageCapture::LowQuality1
QImageCapture::NormalQuality2
QImageCapture::HighQuality3
QImageCapture::VeryHighQuality4

属性文档

[read-only] error : Error

返回当前的错误状态。

访问函数:

QImageCapture::Error error() const

通知信号:

void errorChanged()

另请参阅 errorString()。

[read-only] errorString : QString

返回一个描述当前错误状态的字符串。

访问函数:

QString errorString() const

通知信号:

void errorChanged()

另请参阅 error()。

fileFormat : FileFormat

该属性存储图像格式。

访问函数:

QImageCapture::FileFormat fileFormat() const
void setFileFormat(QImageCapture::FileFormat format)

通知信号:

void fileFormatChanged()

metaData : QMediaMetaData

该属性包含将嵌入到图像中的元数据。

注意: 相机后端可能会添加时间戳或位置等额外 字段。

访问函数:

QMediaMetaData metaData() const
void setMetaData(const QMediaMetaData &metaData)

通知信号:

void metaDataChanged()

quality : Quality

该属性存储图像的编码质量。

访问函数:

QImageCapture::Quality quality() const
void setQuality(QImageCapture::Quality quality)

通知信号:

void qualityChanged()

[read-only] readyForCapture : bool

如果相机已准备好立即拍摄图像,则返回true 。当readyForCapture 为false 时,调用capture()是不被允许的,并将引发错误。

访问函数:

bool isReadyForCapture() const

通知器信号:

void readyForCaptureChanged(bool ready)

[read-only] supportedFormats : const QList<FileFormat>

该属性包含一个支持的文件格式列表。

访问函数:

QList<QImageCapture::FileFormat> supportedFormats()

成员函数文档

[explicit] QImageCapture::QImageCapture(QObject *parent = nullptr)

根据parent 创建一个图像捕获对象,该对象可捕获相机拍摄的单张静止图像。

要捕获图像,必须将图像捕获对象和QCamera 都连接到一个捕获会话中。

[override virtual noexcept] QImageCapture::~QImageCapture()

销毁捕获对象的图像。

void QImageCapture::addMetaData(const QMediaMetaData &metaData)

在任何现有的元数据中添加额外的metaData ,并将该元数据嵌入到捕获的图像中。

[slot] int QImageCapture::capture()

捕获图像并将其作为QImage 提供。在大多数情况下,此操作为异步操作,随后会触发QImageCapture::imageExposed()、QImageCapture::imageCaptured()或QImageCapture::error()信号。

QImageCapture::capture 返回捕获 ID 参数,该参数用于imageExposed()、imageCaptured() 和imageSaved() 信号。

另请参阅 isReadyForCapture()。

QMediaCaptureSession *QImageCapture::captureSession() const

返回该摄像头所连接的捕获会话;如果摄像头未连接到任何捕获会话,则返回 nullptr。

使用QMediaCaptureSession::setImageCapture() 将图像捕获连接到一个会话。

[slot] int QImageCapture::captureToFile(const QString &file = QString())

拍摄图片并将其保存至file 。在大多数情况下,此操作是异步进行的,随后会触发以下信号:QImageCapture::imageExposed()、QImageCapture::imageCaptured()、QImageCapture::imageSaved() 或QImageCapture::error()。

如果传递了一个空的 `file `,相机后端将选择系统上照片的默认位置和命名方案;如果仅指定了文件名而未指定完整路径,图像将保存到默认目录,并通过 `imageCaptured()` 和 `imageSaved()` 信号报告完整路径。

QCamera 保存所有拍摄参数(如曝光设置或图像处理参数),因此调用capture() 之后对相机参数所做的更改不会影响之前的拍摄请求。

QImageCapture::capture 返回捕获 ID 参数,该参数与imageExposed()、imageCaptured() 和imageSaved() 信号一起使用。

另请参阅 isReadyForCapture()。

[signal] void QImageCapture::errorOccurred(int id, QImageCapture::Error error, const QString &errorString)

表示捕获请求id 已失败,错误代码为error ,错误描述为errorString 。

[static] QString QImageCapture::fileFormatDescription(QImageCapture::FileFormat f)

返回指定文件格式的描述,f 。

[static] QString QImageCapture::fileFormatName(QImageCapture::FileFormat f)

返回指定格式的名称,f 。

[signal] void QImageCapture::imageAvailable(int id, const QVideoFrame &frame)

当请求id 的frame 可用时,会触发此信号。

[signal] void QImageCapture::imageCaptured(int id, const QImage &preview)

当捕获到包含请求id 的帧,但该帧尚未处理和保存时,会发出此信号。帧preview 可显示给用户。

[signal] void QImageCapture::imageExposed(int id)

当包含请求id 的帧被暴露时发出的信号。

[signal] void QImageCapture::imageMetadataAvailable(int id, const QMediaMetaData &metaData)

表示由id 标识的图像具有metaData 。

[signal] void QImageCapture::imageSaved(int id, const QString &fileName)

当调用 QImageCapture::CaptureToFile 时,若请求id 的帧已保存至fileName ,则会发出此信号。

bool QImageCapture::isAvailable() const

如果图像捕获服务已准备就绪,则返回 true。

[signal] void QImageCapture::readyForCaptureChanged(bool ready)

表示相机的ready 捕获状态已发生变化。

注意: 这是属性readyForCapture的通知 信号。

QSize QImageCapture::resolution() const

返回编码后图像的分辨率。

另请参阅 setResolution()。

[signal] void QImageCapture::resolutionChanged()

当图像分辨率发生变化时发出信号。

void QImageCapture::setFileFormat(QImageCapture::FileFormat format)

将图像设置为format 。

若为FileFormat 属性赋值一个不受支持的值,则不会产生任何效果。

注意: 属性fileFormat 的设置 函数。

另请参阅 fileFormat() 和supportedFormats 。

void QImageCapture::setMetaData(const QMediaMetaData &metaData)

将要嵌入到捕获图像中的任何现有元数据替换为一组metaData 。

注意: 这是属性metaData 的设置 函数。

另请参阅 metaData()。

void QImageCapture::setQuality(QImageCapture::Quality quality)

设置图像编码quality 。

注意: 这是属性quality 的设置 函数。

另请参阅 quality()。

void QImageCapture::setResolution(const QSize &resolution)

设置编码图像的resolution 。

空的QSize 参数表示编码器应根据图像源提供的信息以及编解码器的限制,做出最优选择。

另请参阅 resolution()。

void QImageCapture::setResolution(int width, int height)

设置编码图像分辨率的width 和height 。

这是一个重载函数。

[static] QList<QImageCapture::FileFormat> QImageCapture::supportedFormats()

返回一个支持的文件格式列表。

注意: 这是 supportedFormats 属性的获取器函数 。

另请参阅 FileFormat 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.