Класс 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
Открытые функции
| QCameraImageCapture(QMediaObject *mediaObject, QObject *parent = nullptr) | |
| virtual | ~QCameraImageCapture() |
| QMultimedia::AvailabilityStatus | availability() const |
| QVideoFrame::PixelFormat | bufferFormat() const |
| QCameraImageCapture::CaptureDestinations | captureDestination() const |
| QImageEncoderSettings | encodingSettings() const |
| QCameraImageCapture::Error | error() const |
| QString | errorString() const |
| QString | imageCodecDescription(const QString &codec) const |
| bool | isAvailable() const |
| bool | isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const |
| bool | isReadyForCapture() const |
| void | setBufferFormat(const QVideoFrame::PixelFormat format) |
| void | setCaptureDestination(QCameraImageCapture::CaptureDestinations destination) |
| void | setEncodingSettings(const QImageEncoderSettings &settings) |
| QList<QVideoFrame::PixelFormat> | supportedBufferFormats() const |
| QStringList | supportedImageCodecs() const |
| QList<QSize> | supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(), bool *continuous = nullptr) const |
Переопределённые открытые функции
| virtual QMediaObject * | mediaObject() const override |
Открытые слоты
| void | cancelCapture() |
| int | capture(const QString &file = QString()) |
Сигналы
| 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 &frame) |
| 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) |
Переопределённые защищённые функции
| virtual bool | setMediaObject(QMediaObject *mediaObject) override |
Подробное описание
Класс 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.
перечисление QCameraImageCapture::DriveMode
| Константа | Значение | Описание |
|---|---|---|
QCameraImageCapture::SingleImageCapture |
0 |
Режим работы — захват одного изображения. |
перечисление 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 = nullptr)
Создаёт объект записи медиа, который записывает медиаданные, производимые объектом mediaObject.
parent передаётся объекту QMediaObject.
[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().
[signal] void QCameraImageCapture::captureDestinationChanged(QCameraImageCapture::CaptureDestinations destination)
Сигнал, излучаемый при изменении пункта назначения захвата destination.
[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){ /* ... */ });
[signal] void QCameraImageCapture::imageAvailable(int id, const QVideoFrame &frame)
Сигнал, излучаемый, когда кадр frame с запросом id доступен.
[signal] void QCameraImageCapture::imageCaptured(int id, const QImage &preview)
Сигнал, излучаемый, когда кадр с запросом id был захвачен, но ещё не обработан и сохранён. Кадр preview может быть показан пользователю.
[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.
[signal] void QCameraImageCapture::readyForCaptureChanged(bool ready)
Сигналы, что состояние готовности камеры к захвату ready изменилось.
Примечание: Сигнал уведомления для свойства readyForCapture.
[virtual] QCameraImageCapture::~QCameraImageCapture()
Уничтожает объект захвата изображений.
QMultimedia::AvailabilityStatus QCameraImageCapture::availability() const
Возвращает доступность данной функциональности.
QVideoFrame::PixelFormat QCameraImageCapture::bufferFormat() const
Возвращает формат буфера для захвата изображений, используемый в данный момент.
См. также supportedBufferFormats() и setBufferFormat().
QCameraImageCapture::CaptureDestinations QCameraImageCapture::captureDestination() const
Возвращает пункт назначения для захвата изображений, используемый в данный момент.
См. также isCaptureDestinationSupported() и setCaptureDestination().
QImageEncoderSettings QCameraImageCapture::encodingSettings() const
Возвращает параметры кодирования изображений, используемые в данный момент.
См. также setEncodingSettings().
QCameraImageCapture::Error QCameraImageCapture::error() const
Возвращает текущее состояние ошибки.
См. также errorString().
QString QCameraImageCapture::errorString() const
Возвращает строку, описывающую текущее состояние ошибки.
См. также error().
QString QCameraImageCapture::imageCodecDescription(const QString &codec) const
Возвращает описание кодека изображения codec.
bool QCameraImageCapture::isAvailable() const
Возвращает true, если служба захвата изображений готова к использованию.
bool QCameraImageCapture::isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const
Возвращает true, если поддерживается назначение захвата изображения; в противном случае возвращает false.
См. также captureDestination() и setCaptureDestination().
[override virtual] QMediaObject *QCameraImageCapture::mediaObject() const
Реализует: QMediaBindableInterface::mediaObject() const.
См. также setMediaObject().
void QCameraImageCapture::setBufferFormat(const QVideoFrame::PixelFormat format)
Устанавливает формат буфера захвата изображения format для использования.
См. также bufferFormat(), supportedBufferFormats() и captureDestination().
void QCameraImageCapture::setCaptureDestination(QCameraImageCapture::CaptureDestinations destination)
Устанавливает назначение захвата для использования.
См. также isCaptureDestinationSupported() и captureDestination().
void QCameraImageCapture::setEncodingSettings(const QImageEncoderSettings &settings)
Устанавливает настройки кодирования изображения.
Если некоторые параметры не указаны или переданы нулевые настройки, кодер выбирает параметры кодирования по умолчанию.
См. также encodingSettings().
[override virtual protected] bool QCameraImageCapture::setMediaObject(QMediaObject *mediaObject)
Реализует: QMediaBindableInterface::setMediaObject(QMediaObject *object).
См. также mediaObject().
QList<QVideoFrame::PixelFormat> QCameraImageCapture::supportedBufferFormats() const
Возвращает список поддерживаемых форматов буфера захвата изображения.
См. также bufferFormat() и setBufferFormat().
QStringList QCameraImageCapture::supportedImageCodecs() const
Возвращает список поддерживаемых кодеров изображений.
QList<QSize> QCameraImageCapture::supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(), bool *continuous = nullptr) const
Возвращает список разрешений, при которых изображения могут быть закодированы.
Если параметр settings не равен null, возвращаемый список уменьшается до разрешений, поддерживаемых с частичными настройками, такими как кодер изображений или применяемое качество.
Если кодер поддерживает произвольные разрешения в поддерживаемом диапазоне, *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.15/qcameraimagecapture.html