Класс QCameraImageCapture
Класс QCameraImageCapture используется для записи медиаконтента. Подробнее...
| Заголовок: | #include <QCameraImageCapture> |
| qmake: | QT += multimedia |
| Наследует: | QObject и QMediaBindableInterface |
Типы публичного доступа
| Перечисление | CaptureDestination { CaptureToFile, CaptureToBuffer } |
| Флаги | CaptureDestinations |
| Перечисление | DriveMode { SingleImageCapture } |
| Перечисление | Error { NoError, NotReadyError, ResourceError, OutOfSpaceError, NotSupportedFeatureError, FormatError } |
Свойства
- readyForCapture : const bool
- 1 свойство унаследовано от QObject
Функции публичного доступа
| QCameraImageCapture(QMediaObject *mediaObject, QObject *parent = Q_NULLPTR) | |
| ~QCameraImageCapture() | |
| QMultimedia::AvailabilityStatus | availability() const |
| QVideoFrame::PixelFormat | bufferFormat() const |
| CaptureDestinations | captureDestination() const |
| QImageEncoderSettings | encodingSettings() const |
| Error | error() const |
| QString | errorString() const |
| QString | imageCodecDescription(const QString &codec) const |
| bool | isAvailable() const |
| bool | isCaptureDestinationSupported(CaptureDestinations destination) const |
| bool | isReadyForCapture() const |
| void | setBufferFormat(const QVideoFrame::PixelFormat format) |
| void | setCaptureDestination(CaptureDestinations destination) |
| void | setEncodingSettings(const QImageEncoderSettings &settings) |
| QList<QVideoFrame::PixelFormat> | supportedBufferFormats() const |
| QStringList | supportedImageCodecs() const |
| QList<QSize> | supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(), bool *continuous = Q_NULLPTR) const |
Переопределённые функции публичного доступа
| virtual QMediaObject * | mediaObject() const override |
- 32 функции публичного доступа унаследованы от QObject
- 1 функция публичного доступа унаследована от QMediaBindableInterface
Слот публичного доступа
| void | cancelCapture() |
| int | capture(const QString &file = QString()) |
- 1 слот публичного доступа унаследован от QObject
Сигналы
| void | bufferFormatChanged(QVideoFrame::PixelFormat format) |
| void | captureDestinationChanged(QCameraImageCapture::CaptureDestinations destination) |
| void | error(int id, QCameraImageCapture::Error error, const QString &errorString) |
| void | imageAvailable(int id, const QVideoFrame &buffer) |
| void | imageCaptured(int id, const QImage &preview) |
| void | imageExposed(int id) |
| void | imageMetadataAvailable(int id, const QString &key, const QVariant &value) |
| void | imageSaved(int id, const QString &fileName) |
| void | readyForCaptureChanged(bool ready) |
- 2 сигнала унаследованы от QObject
Переопределённые защищённые функции
| virtual bool | setMediaObject(QMediaObject *mediaObject) override |
- 9 защищённых функций унаследованы от QObject
- 1 защищённая функция унаследована от QMediaBindableInterface
Дополнительные унаследованные члены
- 11 статических публичных членов унаследованы от QObject
- 9 защищённых функций унаследованы от QObject
- 1 защищённая функция унаследована от QMediaBindableInterface
Подробное описание
Класс QCameraImageCapture используется для записи медиаконтента.
Класс QCameraImageCapture — это класс высокого уровня для записи изображений. Он не предназначен для самостоятельного использования, а для доступа к функциям записи медиа других медиаобъектов, таких как QCamera.
camera = new QCamera; viewfinder = new QCameraViewfinder(); viewfinder->show(); camera->setViewfinder(viewfinder); imageCapture = new QCameraImageCapture(camera); camera->setCaptureMode(QCamera::CaptureStillImage); camera->start(); //on half pressed shutter button camera->searchAndLock(); //on shutter button pressed imageCapture->capture(); //on shutter button released camera->unlock();
См. такжеQCamera.
Документация по типам членов
Перечисление QCameraImageCapture::CaptureDestination Флаги QCameraImageCapture::CaptureDestinations
| Постоянная | Значение | Описание |
|---|---|---|
QCameraImageCapture::CaptureToFile |
0x01 |
Запись изображения в файл. |
QCameraImageCapture::CaptureToBuffer |
0x02 |
Запись изображения в буфер для дальнейшей обработки. |
Тип CaptureDestinations — это псевдоним для QFlags<CaptureDestination>. Он хранит результат побитового ИЛИ комбинации значений CaptureDestination.
enum QCameraImageCapture::DriveMode
| Константа | Значение | Описание |
|---|---|---|
QCameraImageCapture::SingleImageCapture |
0 |
Режим работы — захват одной фотографии. |
enum QCameraImageCapture::Error
| Константа | Значение | Описание |
|---|---|---|
QCameraImageCapture::NoError |
0 |
Нет ошибок. |
QCameraImageCapture::NotReadyError |
1 |
Сервис ещё не готов к захвату. |
QCameraImageCapture::ResourceError |
2 |
Устройство не готово или недоступно. |
QCameraImageCapture::OutOfSpaceError |
3 |
На устройстве закончилось место. |
QCameraImageCapture::NotSupportedFeatureError |
4 |
Устройство не поддерживает захват неподвижных изображений. |
QCameraImageCapture::FormatError |
5 |
Текущий формат не поддерживается. |
Документация свойств
readyForCapture : const bool
Это свойство указывает, готов ли сервис к немедленному захвату изображения.
Вызов capture() в то время, когда readyForCapture false запрещён и приведёт к ошибке.
Функции доступа:
| bool | isReadyForCapture() const |
Сигнал уведомления:
| void | readyForCaptureChanged(bool ready) |
Документация функций-членов
QCameraImageCapture::QCameraImageCapture(QMediaObject *mediaObject, QObject *parent = Q_NULLPTR)
Создаёт записывающее устройство, которое записывает медиаданные, полученные от mediaObject.
parent передаётся в QMediaObject.
QCameraImageCapture::~QCameraImageCapture()
Удаляет объект захвата изображений.
QMultimedia::AvailabilityStatus QCameraImageCapture::availability() const
Возвращает доступность этой функциональности.
QVideoFrame::PixelFormat QCameraImageCapture::bufferFormat() const
Возвращает используемый формат буфера для захвата изображения.
См. также supportedBufferFormats() и setBufferFormat().
[signal] void QCameraImageCapture::bufferFormatChanged(QVideoFrame::PixelFormat format)
Сигнал, испускаемый при изменении формата буфера format для захвата изображения в буфере.
[slot] void QCameraImageCapture::cancelCapture()
Отменяет незавершенные запросы на захват. Уже захваченные и помещенные в очередь для обработки изображения могут быть удалены.
[slot] int QCameraImageCapture::capture(const QString &file = QString())
Захватывает изображение и сохраняет его в file. Эта операция асинхронна в большинстве случаев, за которой следуют сигналы QCameraImageCapture::imageExposed(), QCameraImageCapture::imageCaptured(), QCameraImageCapture::imageSaved() или QCameraImageCapture::error().
Если пустое file передано, камера-бекенд выбирает стандартное расположение и схему именования фотографий в системе, если указано только имя файла без полного пути, изображение будет сохранено в стандартном каталоге, с полным путём, который будет сообщён сигналами imageCaptured() и imageSaved().
QCamera сохраняет все параметры захвата, такие как параметры экспозиции или параметры обработки изображения, поэтому изменения параметров камеры после вызова capture() не влияют на предыдущие запросы на захват.
QCameraImageCapture::capture возвращает параметр идентификатора захвата, используемый с сигналами imageExposed(), imageCaptured() и imageSaved().
См. также isReadyForCapture().
CaptureDestinations QCameraImageCapture::captureDestination() const
Возвращает место назначения захвата изображения.
См. также isCaptureDestinationSupported() и setCaptureDestination().
[signal] void QCameraImageCapture::captureDestinationChanged(QCameraImageCapture::CaptureDestinations destination)
Сигнал, испускаемый при изменении места назначения захвата destination.
QImageEncoderSettings QCameraImageCapture::encodingSettings() const
Возвращает используемые настройки кодирования изображения.
См. также setEncodingSettings().
Error QCameraImageCapture::error() const
Возвращает текущее состояние ошибки.
См. также errorString().
[signal] void QCameraImageCapture::error(int id, QCameraImageCapture::Error error, const QString &errorString)
Сигналы о том, что запрос на захват id завершился ошибкой error и описанием ошибки errorString.
Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную утилиту для получения указателя на функцию, как показано в этом примере:
connect(cameraImageCapture, QOverload<int, QCameraImageCapture::Error, const QString &>::of(&QCameraImageCapture::error),
[=](int id, QCameraImageCapture::Error error, const QString &errorString){ /* ... */ }); QString QCameraImageCapture::errorString() const
Возвращает строку, описывающую текущее состояние ошибки.
См. также error().
[signal] void QCameraImageCapture::imageAvailable(int id, const QVideoFrame &buffer)
Сигнал, испускаемый при доступности кадра с запросом id как buffer.
[signal] void QCameraImageCapture::imageCaptured(int id, const QImage &preview)
Сигнал, испускаемый при захвате кадра с запросом id, но ещё не обработанном и сохранённом. Кадр preview можно отобразить пользователю.
QString QCameraImageCapture::imageCodecDescription(const QString &codec) const
Возвращает описание кодека изображения codec.
[signal] void QCameraImageCapture::imageExposed(int id)
Сигнал, испускаемый при экспонировании кадра с запросом id.
[signal] void QCameraImageCapture::imageMetadataAvailable(int id, const QString &key, const QVariant &value)
Сигнал, что метаданные для изображения с запросом id доступны. Также включает key и value метаданных.
Этот сигнал испускается между сигналами imageExposed и imageSaved.
[signal] void QCameraImageCapture::imageSaved(int id, const QString &fileName)
Сигнал, испускаемый при сохранении кадра с запросом id в fileName.
bool QCameraImageCapture::isAvailable() const
Возвращает true, если служба захвата изображений готова к использованию.
bool QCameraImageCapture::isCaptureDestinationSupported(CaptureDestinations destination) const
Возвращает true, если пункт назначения захвата изображения destination поддерживается; в противном случае возвращает false.
См. также captureDestination() и setCaptureDestination().
[override virtual] QMediaObject *QCameraImageCapture::mediaObject() const
Переопределено из QMediaBindableInterface::mediaObject().
См. также setMediaObject().
[signal] void QCameraImageCapture::readyForCaptureChanged(bool ready)
Сигнализирует о том, что состояние готовности камеры к захвату ready изменилось.
Примечание: Сигнал-уведомление для свойства readyForCapture.
void QCameraImageCapture::setBufferFormat(const QVideoFrame::PixelFormat format)
Устанавливает формат изображения буфера захвата format, который будет использоваться.
См. также bufferFormat(), supportedBufferFormats() и captureDestination().
void QCameraImageCapture::setCaptureDestination(CaptureDestinations destination)
Устанавливает пункт назначения захвата destination, который будет использоваться.
См. также isCaptureDestinationSupported() и captureDestination().
void QCameraImageCapture::setEncodingSettings(const QImageEncoderSettings &settings)
Устанавливает параметры кодирования изображения settings.
Если некоторые параметры не указаны или передан null-указатель, кодер выбирает значения параметров кодирования по умолчанию.
См. также encodingSettings().
[override virtual protected] bool QCameraImageCapture::setMediaObject(QMediaObject *mediaObject)
Переопределено из QMediaBindableInterface::setMediaObject().
См. также mediaObject().
QList<QVideoFrame::PixelFormat> QCameraImageCapture::supportedBufferFormats() const
Возвращает список поддерживаемых форматов буфера захвата изображения.
См. также bufferFormat() и setBufferFormat().
QStringList QCameraImageCapture::supportedImageCodecs() const
Возвращает список поддерживаемых кодеков изображений.
QList<QSize> QCameraImageCapture::supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(), bool *continuous = Q_NULLPTR) const
Возвращает список разрешений, при которых изображения могут быть закодированы.
Если передан не нулевой параметр settings, возвращаемый список уменьшается до разрешений, поддерживаемых с частичными настройками, такими как кодек изображения или применённое качество.
Если кодер поддерживает произвольные разрешения в допустимом диапазоне, *continuous устанавливается в true, в противном случае *continuous устанавливается в false.
См. также QImageEncoderSettings::resolution().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qcameraimagecapture.html