【问题标题】:Qt image I/O and QPixmap::grabWindowQt 图像 I/O 和 QPixmap::grabWindow
【发布时间】:2012-05-06 09:53:00
【问题描述】:

我正在编写一种“远程桌面”程序,但我遇到了一些问题。 我在服务器端使用 QPixmap::grabWindow 来捕获屏幕截图并将其发送到客户端,然后将其写入 QByteArray 并通过 QTcpSocket 发送。 生成的 QPixmap 的大小太大,并且您了解应用程序对时间至关重要。有没有办法优化它?

【问题讨论】:

    标签: c++ image qt io


    【解决方案1】:

    (除了 Michael 更详细的回答:)对于压缩,您可以使用 qCompress / qUncompress(这实际上取决于 Qt 包含的 zlib)http://qt-project.org/doc/qt-4.8/qbytearray.html#qUncompress

    【讨论】:

      【解决方案2】:
      • 使用增量。基本思想是这样的:想象一个网格覆盖窗口图像,将其划分为 16px x 16px 左右的正方形。将每个方块与前一个窗口中发送给客户端的对应方块进行比较。如果只有一个像素发生了变化,请将正方形的新内容发送给客户端。
      • 尝试使用某种形式的快速压缩来压缩图像。例如,您可以使用zlib,但将压缩级别保持在 3 或以下。或者您可以在通过 TCP 发送时压缩整个数据流(这很棘手 - 您必须小心刷新缓冲区等。)

      【讨论】:

        【解决方案3】:

        添加到迈克尔斯的答案:

        • 降低分辨率
        • 降低颜色深度
        • 降低帧率
        • 使用截屏编解码器/解码器

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-18
          相关资源
          最近更新 更多