Hi, I found a way to get the QImage of an QQuickItem, I am aware of QQuickWindow::grabImage and QQuickItem::grabToImage will be available in Qt5.4. So far i am getting correct QImage and it seems to work quite well. I want to know what i am doing is correct.
Flow:- - create ShaderEffectSource - on ShaderEffectSource::scheduledUpdateCompleted signal hook to afterRendering of window - inside afterRendering get the ShaderEffectSource::textureProvider::texture and use glGetTexImage to get an QImage. Code:- *C++* QuickWindow() { ..... m_snapshotItem = root->findChild<QQuickItem*>("snapShotItem"); connect (m_snapshotItem, SIGNAL(scheduledUpdateCompleted()), this, SLOT(takeSnapshot())); } private slots: void takeSnapshot() { connect(this, SIGNAL(afterRendering()), this, SLOT(getImage()), Qt::DirectConnection); } void getImage() { qDebug() << "taking snapshot..!"; disconnect(this, SIGNAL(afterRendering()), this, SLOT(getImage())); QSGTexture *texture = m_snapshotItem->textureProvider()->texture(); texture->bind(); GLint internalFormat; glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &internalFormat); // get internal format type of GL texture QImage img(texture->textureSize(), QImage::Format_RGBX8888); glGetTexImage(GL_TEXTURE_2D, 0, internalFormat, GL_UNSIGNED_BYTE, img.bits()); img.save("c:\\temp\\snapshot.bmp"); } *QML* Item { anchors.fill: parent Rectangle { id: rect anchors.fill: parent color: "green" } ShaderEffectSource { objectName: 'snapShotItem' anchors.fill: rect live: false recursive: false sourceItem: rect } } Regards, Manish
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest