- Qt 6.8
- Qt Multimedia
- C++ Classes
- QtMultimedia
- QImageCapture
- Qt 6.8.2 Reference Documentation

# QImageCapture Class

The QImageCapture class is used for the recording of media content. More...

Header: | `#include <QImageCapture>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Multimedia)` `target_link_libraries(mytarget PRIVATE Qt6::Multimedia)`
qmake: | `QT += multimedia`
Inherits: | QObject

- List of all members, including inherited members

## Public Types

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

## Properties

error : const Error errorString : const QString fileFormat : const FileFormat | metaData : QMediaMetaData quality : const Quality readyForCapture : const bool

## Public Functions

| 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)

## Public Slots

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

## Signals

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()

## Static Public Members

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

## Detailed Description

The QImageCapture class is a high level images recording class. It's not intended to be used alone but for accessing the media recording functions of other media objects, like QCamera.

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

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

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

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

See also QCamera.

## Member Type Documentation

### enum QImageCapture::Error

Constant | Value | Description
--- | --- | ---
`QImageCapture::NoError` | `0` | No Errors.
`QImageCapture::NotReadyError` | `1` | The service is not ready for capture yet.
`QImageCapture::ResourceError` | `2` | Device is not ready or not available.
`QImageCapture::OutOfSpaceError` | `3` | No space left on device.
`QImageCapture::NotSupportedFeatureError` | `4` | Device does not support stillimages capture.
`QImageCapture::FormatError` | `5` | Current format is not supported.

### enum QImageCapture::FileFormat

Choose one of the following image formats:

Constant | Value | Description
--- | --- | ---
`QImageCapture::UnspecifiedFormat` | `0` | No format specified
`QImageCapture::JPEG` | `1` | `.jpg` or `.jpeg` format
`QImageCapture::PNG` | `2` | `.png` format
`QImageCapture::WebP` | `3` | `.webp` format
`QImageCapture::Tiff` | `4` | `.tiff` format

### enum QImageCapture::Quality

Enumerates quality encoding levels.

Constant | Value
--- | ---
`QImageCapture::VeryLowQuality` | `0`
`QImageCapture::LowQuality` | `1`
`QImageCapture::NormalQuality` | `2`
`QImageCapture::HighQuality` | `3`
`QImageCapture::VeryHighQuality` | `4`

## Property Documentation

### `[read-only]` error : const Error

Returns the current error state.

Access functions:

QImageCapture::Error | error() const

Notifier signal:

void | errorChanged()

See also errorString().

### `[read-only]` errorString : const QString

Returns a string describing the current error state.

Access functions:

QString | errorString() const

Notifier signal:

void | errorChanged()

See also error().

### `[read-only]` fileFormat : const FileFormat

This property holds the image format.

Access functions:

QImageCapture::FileFormat | fileFormat() const

Notifier signal:

void | fileFormatChanged()

### metaData : QMediaMetaData

This property holds the meta data that will get embedded into the image.

Note: Additional fields such as a time stamp or location may get added by the camera back end.

Access functions:

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

Notifier signal:

void | metaDataChanged()

### `[read-only]` quality : const Quality

This property holds the image encoding quality.

Access functions:

QImageCapture::Quality | quality() const

Notifier signal:

void | qualityChanged()

### `[read-only]` readyForCapture : const bool

Holds `true` if the camera is ready to capture an image immediately. Calling capture() while `readyForCapture` is `false` is not permitted and results in an error.

Access functions:

bool | isReadyForCapture() const

Notifier signal:

void | readyForCaptureChanged(bool ready)

## Member Function Documentation

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

Constructs a image capture object, from a parent, that can capture individual still images produced by a camera.

You must connect both an image capture object and a QCamera to a capture session to capture images.

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

Destroys images capture object.

### void QImageCapture::addMetaData(const QMediaMetaData &metaData)

Adds additional metaData to any existing meta data, that is embedded into the captured image.

### `[slot]` int QImageCapture::capture()

Capture the image and make it available as a QImage. This operation is asynchronous in majority of cases, followed by signals QImageCapture::imageExposed(), QImageCapture::imageCaptured() or QImageCapture::error().

QImageCapture::capture returns the capture Id parameter, used with imageExposed(), imageCaptured() and imageSaved() signals.

See also isReadyForCapture().

### QMediaCaptureSession *QImageCapture::captureSession() const

Returns the capture session this camera is connected to, or a nullptr if the camera is not connected to a capture session.

Use QMediaCaptureSession::setImageCapture() to connect the image capture to a session.

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

Capture the image and save it to file. This operation is asynchronous in majority of cases, followed by signals QImageCapture::imageExposed(), QImageCapture::imageCaptured(), QImageCapture::imageSaved() or QImageCapture::error().

If an empty file is passed, the camera back end chooses the default location and naming scheme for photos on the system, if only file name without full path is specified, the image will be saved to the default directory, with a full path reported with imageCaptured() and imageSaved() signals.

QCamera saves all the capture parameters like exposure settings or image processing parameters, so changes to camera parameters after capture() is called do not affect previous capture requests.

QImageCapture::capture returns the capture Id parameter, used with imageExposed(), imageCaptured() and imageSaved() signals.

See also isReadyForCapture().

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

Signals that the capture request id has failed with an error and errorString description.

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

Returns the description of the given file format, f.

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

Returns the name of the given format, f.

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

Signal emitted when the frame with request id is available.

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

Signal emitted when the frame with request id was captured, but not processed and saved yet. Frame preview can be displayed to user.

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

Signal emitted when the frame with request id was exposed.

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

Signals that an image identified by id has metaData.

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

Signal emitted when QImageCapture::CaptureToFile is set and the frame with request id was saved to fileName.

### bool QImageCapture::isAvailable() const

Returns true if the images capture service ready to use.

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

Signals that a camera's ready for capture state has changed.

Note: Notifier signal for property readyForCapture.

### QSize QImageCapture::resolution() const

Returns the resolution of the encoded image.

See also setResolution().

### `[signal]` void QImageCapture::resolutionChanged()

Signals when the image resolution changes.

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

Sets the image format.

See also fileFormat().

### void QImageCapture::setMetaData(const QMediaMetaData &metaData)

Replaces any existing meta data, to be embedded into the captured image, with a set of metaData.

Note: Setter function for property metaData.

See also metaData().

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

Sets the image encoding quality.

See also quality().

### void QImageCapture::setResolution(const QSize &resolution)

Sets the resolution of the encoded image.

An empty QSize indicates the encoder should make an optimal choice based on what is available from the image source and the limitations of the codec.

See also resolution().

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

Sets the width and height of the resolution of the encoded image.

This is an overloaded function.

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

Returns a list of supported file formats.

See also FileFormat.