10#include <QtGui/qimagewriter.h>
11#include <QtCore/qdir.h>
12#include <QtCore/private/qstdweb_p.h>
14#include <emscripten/val.h>
18using namespace Qt::Literals;
22
23
24
27QWasmImageCapture::~QWasmImageCapture() =
default;
32 Q_EMIT error(m_lastId, QImageCapture::NotReadyError, msgCameraNotReady());
36 QString imageFilenName;
37 if (fileName.isEmpty())
38 imageFilenName = QDir::homePath() + u"/image.jpg"_s;
40 imageFilenName = fileName;
42 QImage image = takePicture();
46 QImageWriter writer(imageFilenName);
51 if (writer.write(image)) {
52 qCDebug(qWasmImageCapture) << Q_FUNC_INFO <<
"image saved";
53 Q_EMIT imageSaved(m_lastId, fileName);
55 QImageCapture::Error err = (writer.error() == QImageWriter::UnsupportedFormatError)
56 ? QImageCapture::FormatError
57 : QImageCapture::ResourceError;
59 Q_EMIT error(m_lastId, err, writer.errorString());
68 Q_EMIT error(m_lastId, QImageCapture::NotReadyError, msgCameraNotReady());
72 QImage image = takePicture();
76 Q_EMIT imageCaptured(m_lastId, image);
85 QVideoFrame thisFrame = m_captureSession->videoSink()->videoFrame();
87 if (thisFrame.isValid()) {
88 Q_EMIT imageAvailable(m_lastId, thisFrame);
89 image = thisFrame.toImage();
93 qCDebug(qWasmImageCapture) << Q_FUNC_INFO <<
"image capture failed";
94 Q_EMIT error(m_lastId, QImageCapture::ResourceError, QStringLiteral(
"Capture failed"));
98 Q_EMIT imageCaptured(m_lastId, image);
99 if (m_settings.resolution().isValid() && m_settings.resolution() != image.size())
100 image = image.scaled(m_settings.resolution());
107 return m_isReadyForCapture;
117 m_settings = settings;
122 if (m_isReadyForCapture != isReady) {
123 m_isReadyForCapture = isReady;
124 Q_EMIT readyForCaptureChanged(m_isReadyForCapture);
132 if (m_captureSession == captureSession)
135 if (captureSession) {
137 m_captureSession = captureSession;
139 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
Combined button and popup list for selecting options.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")