通过网络压缩和序列化QImage并提前知道压缩大小

时间:2011-04-29 06:42:38

标签: qt4 image-compression

我通过网络发送了多个MessagePacketScreenPacket。但所有这些数据包后跟一个CommonHeaderPacket,它告诉即将到来的数据包的类型,大小,ID,时间和校验和。所以我需要在发送之前知道数据包的大小 ScreenPacket有一个_image:QImage(jpeg),它也将通过网络进行压缩和序列化。我可以通过QImageWriter在通过套接字发送时执行此操作。但在发送ScreenPacket之前,我需要发送包含CommonHeaderPacket的{​​{1}}。那么如何提前知道尺寸?因为QImage没有sizesetQuality()方法 我不想在临时流中写它以提前知道大小。那么还有什么方法可以提前知道尺寸。

摘要

setCompression()没有QImagesetCompression方法。 setQuality有。但在写之前我需要知道ByteSize。和字节大小取决于压缩和质量 例如我需要将QImageWriter保存到另一个QImage Persistent storable Object QualityCompression。没有磁盘开销。

1 个答案:

答案 0 :(得分:0)

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