How to get a screenshot in Android?
-
Hi
of your own app ?
or of whole "Desktop" / other app. -
@mikeeeeee I would to it like this:
QQuickWindow* currentWindow = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow()); if(!currentWindow) return; QScreen* screen = currentWindow->screen(); if(!screen) return; QRect screenGeometry = fullScreen ? screen->geometry() : currentWindow->geometry(); auto pm = screen->grabWindow(0, screenGeometry.x(), screenGeometry.y(), screenGeometry.width(), screenGeometry.height()); QByteArray bArray; QBuffer buffer(&bArray); buffer.open(QIODevice::WriteOnly); pm.save(&buffer, "PNG");
-
This piece of code doesn't work either. I put in my code that converts QScreen to QByteArray. QByteArray is empty.
QQuickWindow* currentWindow = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow()); // if(!currentWindow) // return; QScreen* screen = currentWindow->screen();
-
This all code
QQuickWindow* currentWindow = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow());
// if(!currentWindow)
// return;
QScreen* screen = currentWindow->screen();
// if(!screen)
// return;
//QRect screenGeometry = fullScreen ? screen->geometry() : currentWindow->geometry();
/* QRect screenGeometry = fullScreen ? screen->geometry() : currentWindow->geometry();
auto pm = screen->grabWindow(0, screenGeometry.x(), screenGeometry.y(), screenGeometry.width(), screenGeometry.height());QByteArray bArray; QBuffer buffer(&bArray); buffer.open(QIODevice::WriteOnly); pm.save(&buffer, "PNG");*/ QImage myScreen; //QPixmap pic = QPixmap::grabWindow(QWidget::winId(),0,0,50,50); //qDebug()<<QWidget::winId();
// QScreen *screen = QGuiApplication::primaryScreen();
QPixmap pixamp;
pixamp = screen->grabWindow(0);
myScreen = pixamp.toImage();
//myScreen = QPixmap::grabWindow();
//myScreen = quickView->grabWindow();
//myScreen.save("C:\Users\New Owner\Downloads\i.png");
QByteArray bArray;
QBuffer buffer(&bArray);
buffer.open(QIODevice::WriteOnly);
//myScreen.save(&buffer, "JPEG");
//QString image("data:image/jpg;base64,");
myScreen.save(&buffer, "PNG");
QString image("data:image/png;base64,");
image.append(QString::fromLatin1(bArray.toBase64().data()));
qDebug()<<"screenShot:"<<image;
return image; -
is the image valid then ?
like
qDebug() << image.isNull();
says false ? -
@mrjj said in How to get a screenshot in Android?:
qDebug() << image.isNull();
qDebug() <<"image.isNull() :" << image.isNull();
return:
image.isNull() : false@mikeeeeee
Ok, that means its does grab something :) -
@mikeeeeee
Cant you just save it ?
https://doc.qt.io/qt-5/qimage.html#save -
We've made a mistake. I immediately ask the text QString image("data:image/png;base64,"); And so, pictures of the there is no. Need another code.
@mikeeeeee
Im really not sure what you are saying. :)
That code work for others it seemed
https://stackoverflow.com/questions/21697185/how-to-take-screenshot-of-qml-application-without-qquickview/38501975What Qt version are you using?