// STL includes #include // QT includes #include #include #include #include #include #include // Utils includes #include #include void createScreenshot(const int cropHorizontal, const int cropVertical, const int decimation, Image & image) { // Create the full size screenshot QScreen *screen = QApplication::primaryScreen(); const QRect screenSize = screen->availableGeometry(); const int croppedWidth = screenSize.width() - 2*cropVertical; const int croppedHeight = screenSize.height() - 2*cropHorizontal; const QPixmap fullSizeScreenshot = screen->grabWindow(0, cropVertical, cropHorizontal, croppedWidth, croppedHeight); // Scale the screenshot to the required size const int width = fullSizeScreenshot.width()/decimation; const int height = fullSizeScreenshot.height()/decimation; const QPixmap scaledScreenshot = fullSizeScreenshot.scaled(width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation); // Convert the QPixmap to QImage in order to get out RGB values const QImage qImage = scaledScreenshot.toImage(); // Make sure that the output image has the right size image.resize(width, height); // Copy the data into the output image for (int y=0; y> 16; outPixel.green = (inPixel & 0x0000ff00) >> 8; outPixel.blue = (inPixel & 0x000000ff); } } } int main(int argc, char** argv) { int decimation = 10; QApplication app(argc, argv); QElapsedTimer timer; Image screenshot(64,64); int loopCnt = 100; timer.start(); for (int i=0; i