Сжатие и сериализация QImage по сети и заранее знание сжатого размера

Я отправляю несколько MessagePacket и ScreenPacket по сети. но за всеми этими пакетами следует CommonHeaderPacket, который сообщает тип, размер, идентификатор, время и контрольную сумму предстоящего пакета. Поэтому мне нужно знать размер пакета перед отправкой.
ScreenPacket имеет _image:QImage (jpeg), который также будет сжат и сериализован по сети. Я могу сделать это через QImageWriter при отправке через сокет. Но перед отправкой ScreenPacket мне нужно отправить CommonHeaderPacket, который включает size. так как я могу знать размер заранее? поскольку QImage не имеет методов setQuality() или setCompression().
Я не хочу писать его во временном потоке, чтобы заранее знать размер. так что еще может быть способ узнать размер заранее.

Резюме

QImage не имеет setCompression или setQuality метода. QImageWriter есть. Но мне нужно знать ByteSize, прежде чем писать. и размер байта зависит от сжатия и качества.
например. Мне нужно, чтобы QImage было сохранено в другом Persistent storable Object с изменением Quality, Compression. без накладных расходов на диск.


person Neel Basu    schedule 29.04.2011    source источник


Ответы (1)


Поможет ли вам использовать QImageWriter для записи в QBuffer? Таким образом, вы избежите накладных расходов на диск, и вы можете получить доступ к QByteArray, чтобы получить его размер и данные, чтобы передать их непосредственно в ваш сетевой поток. Таким образом, вам придется кодировать JPEG только один раз.

person Steffen    schedule 29.04.2011