5#include <qimagewriter.h>
13using namespace Qt::Literals;
17
18
19
22QWasmImageCapture::~QWasmImageCapture() =
default;
27 emit error(m_lastId, QImageCapture::NotReadyError, msgCameraNotReady());
31 QString imageFilenName;
32 if (fileName.isEmpty())
33 imageFilenName = QDir::homePath() + u"/image.jpg"_s;
35 imageFilenName = fileName;
37 QImage image = takePicture();
41 QImageWriter writer(imageFilenName);
46 if (writer.write(image)) {
47 qCDebug(qWasmImageCapture) << Q_FUNC_INFO <<
"image saved";
48 emit imageSaved(m_lastId, fileName);
50 QImageCapture::Error err = (writer.error() == QImageWriter::UnsupportedFormatError)
51 ? QImageCapture::FormatError
52 : QImageCapture::ResourceError;
54 emit error(m_lastId, err, writer.errorString());
63 emit error(m_lastId, QImageCapture::NotReadyError, msgCameraNotReady());
67 QImage image = takePicture();
71 emit imageCaptured(m_lastId, image);
77 QVideoFrame thisFrame = m_captureSession->videoSink()->videoFrame();
78 if (!thisFrame.isValid())
82 emit imageAvailable(m_lastId, thisFrame);
84 QImage image = thisFrame.toImage();
86 qCDebug(qWasmImageCapture) << Q_FUNC_INFO <<
"image is null";
87 emit error(m_lastId, QImageCapture::ResourceError, QStringLiteral(
"Resource error"));
91 emit imageCaptured(m_lastId, image);
92 if (m_settings.resolution().isValid() && m_settings.resolution() != image.size())
93 image = image.scaled(m_settings.resolution());
100 return m_isReadyForCapture;
110 m_settings = settings;
115 if (m_isReadyForCapture != isReady) {
116 m_isReadyForCapture = isReady;
117 emit readyForCaptureChanged(m_isReadyForCapture);
125 if (m_captureSession == captureSession)
128 if (captureSession) {
130 m_captureSession = captureSession;
132 m_captureSession = captureSession;
int capture(const QString &fileName) override
void setReadyForCapture(bool isReady)
bool isReadyForCapture() const override
void setImageSettings(const QImageEncoderSettings &settings) override
void setCaptureSession(QPlatformMediaCaptureSession *session)
QImageEncoderSettings imageSettings() const override
int captureToBuffer() override
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")