Qt 截屏 程序超级简洁代码

     最近搞了搞Qt的截屏程序,参考了网上几个例子,但是那些例子都加了很多作者自己要完成的内容,别人看起来比较费劲,我整理了一下,其实真正截图起作用的就那么几行代码,所以我觉得有必要分享一下

    QPixmap fullScreen;

    int screenWidget = 640; //屏幕尺寸设置,自己要写别的函数修改尺寸的改这里
    int screenHight  = 480;
    //就是这一步截取了全屏
    fullScreen = QPixmap::grabWindow(QApplication::desktop()->winId(),0,0,screenWidget,screenHight);

    //这一步是设置弹出框询问保存位置和命名的,要自己修改位置和命名的改这里
//    QFileDialog::Options options;
//    QString selectedFilter;
//    QString fileName = QFileDialog::getSaveFileName(this,
//                                    tr("Save picture"),
//                                    "savescreen.jpg",
//                                    &selectedFilter,
//                                    options);
    //设置截图区域,截图区域是从整屏幕截图中复制相应的区域,要自己写函数的改这里
//    int x = 0;
//    int y = 0;
//    int w = 300;
//    int h = 300;


/****************************以下几步是正常的保存QPixmap,可以不转QIameg****************************/
//    fullScreen = fullScreen.copy(x,y,w,h);    //截取区域改这里

//    fullScreen.save(fileName,"JPG") 需要有保存对话框的这么写

//    if(fullScreen.save("/savescreen.jpg","JPG"))
//        qDebug("----------save screen success----------");


/**************以下几步是针对嵌入式系统,图像位数有限制,转为了8位的图像,PC端可以不需要**************/
    QImage image = fullScreen.toImage();

//    image = image.copy(x,y,w,h);  //截取区域改这里

    //转8位
    image = image.convertToFormat(QImage::Format_Indexed8,Qt::AutoColor);

    //image.save(fileName,"JPG") 需要有保存对话框的这么写
    if(image.save("/savescreen.jpg","JPG"))
        qDebug("----------save screen success----------");
以上的代码,只要写在一个空的工程里,就能运行了,我是在嵌入式的linux下运行,所以会有图像位数的限制,要转一下QImage降低位数,我直接保存在了固定的路径,名称也固定了,运行一次截一次图,这样就是最小最简洁的了 偷笑

然后我把各种需要扩展的地方都做了注释,比如要自己写接口设定截图区域的,我标了在哪里改,自己要写保存路径的,我也标出来在哪里改,要是在PC端运行的,可以直接保存QPixmap。

仅希望对别人有所帮助

你可能感兴趣的:(linux,linux,linux,image,image,嵌入式,扩展,qt,qt,qt)