5#include <qimagewriter.h>
9#include <private/qstdweb_p.h>
12#include <emscripten/val.h>
16using namespace Qt::Literals;
20
21
22
25QWasmImageCapture::~QWasmImageCapture() =
default;
30 emit error(m_lastId, QImageCapture::NotReadyError, msgCameraNotReady());
34 QString imageFilenName;
35 if (fileName.isEmpty())
36 imageFilenName = QDir::homePath() + u"/image.jpg"_s;
38 imageFilenName = fileName;
40 QImage image = takePicture();
44 QImageWriter writer(imageFilenName);
49 if (writer.write(image)) {
50 qCDebug(qWasmImageCapture) << Q_FUNC_INFO <<
"image saved";
51 emit imageSaved(m_lastId, fileName);
53 QImageCapture::Error err = (writer.error() == QImageWriter::UnsupportedFormatError)
54 ? QImageCapture::FormatError
55 : QImageCapture::ResourceError;
57 emit error(m_lastId, err, writer.errorString());
66 emit error(m_lastId, QImageCapture::NotReadyError, msgCameraNotReady());
70 QImage image = takePicture();
74 emit imageCaptured(m_lastId, image);
83 QVideoFrame thisFrame = m_captureSession->videoSink()->videoFrame();
85 if (thisFrame.isValid()) {
86 emit imageAvailable(m_lastId, thisFrame);
87 image = thisFrame.toImage();
91 qCDebug(qWasmImageCapture) << Q_FUNC_INFO <<
"image capture failed";
92 emit error(m_lastId, QImageCapture::ResourceError, QStringLiteral(
"Capture failed"));
96 emit imageCaptured(m_lastId, image);
97 if (m_settings.resolution().isValid() && m_settings.resolution() != image.size())
98 image = image.scaled(m_settings.resolution());
105 return m_isReadyForCapture;
115 m_settings = settings;
120 if (m_isReadyForCapture != isReady) {
121 m_isReadyForCapture = isReady;
122 emit readyForCaptureChanged(m_isReadyForCapture);
130 if (m_captureSession == captureSession)
133 if (captureSession) {
135 m_captureSession = captureSession;
137 m_captureSession = captureSession;
The QVideoFrame class represents a frame of video data.
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
Combined button and popup list for selecting options.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")