【问题标题】:Compressing and Serializing QImage over the Network and knowing compressed size in advance通过网络压缩和序列化 QImage 并提前知道压缩大小
【发布时间】:2011-04-29 06:42:37
【问题描述】:

我正在通过网络发送几个MessagePacketScreenPacket。但是所有这些数据包后面都跟着一个CommonHeaderPacket,它告诉了即将到来的数据包的类型、大小、id、时间和校验和。所以我需要在发送之前知道数据包的大小。
ScreenPacket 有一个_image:QImage (jpeg),它也将通过网络进行压缩和序列化。我可以通过QImageWriter 做到这一点,同时通过套接字发送它。但在发送ScreenPacket 之前,我需要发送包含sizeCommonHeaderPacket。那我怎么能提前知道尺寸呢?因为 QImage 没有 setQuality()setCompression() 方法。
我不想将它写在临时流中以提前知道大小。那么还有什么方法可以提前知道大小。

总结

QImage 没有 setCompressionsetQuality 方法。 QImageWriter 有。但我需要在写作之前知道 ByteSize。字节大小取决于压缩和质量。
例如我需要将QImage 保存到另一个Persistent storable Object 中,并在QualityCompression 中进行更改。没有磁盘开销。

【问题讨论】:

    标签: qt4 image-compression


    【解决方案1】:

    使用QImageWriter 写入QBuffer 对您有帮助吗?这样您就可以避免磁盘开销,并且您可以访问QByteArray 以获取其大小和数据以将其直接推送到您的网络流中。所以你只需要对 JPEG 编码一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多