Название: не могу открыть QImage из принятого буффера. [РЕШЕНО] Отправлено: Sadovnik от Ноябрь 30, 2011, 17:36 Здравствуйте!
У меня такая задача: есть клиент, есть сервер. на клиенте есть картинка, которая шлётся на сервер и рассылается всем подключенным клиентам. Картинка в клиенте сворачивается в буффер так: Код: void SimpleChatClient::sendMessage() на сервере приниамется: Код: void SimpleChatServer::receiveMessage() и потом возвращемся в клиент: Код: void SimpleChatClient::receiveMessage() buffer описывается в хэдере клиента: Код: QBuffer* buffer; И говорит, что картинка пустая. Сохранял во всех трёх шагах буффер в файл: файлы идентичны и отлично читаются и открываются, как изображения. если при отправки картинки открыть её после сворачивания в байты (из буффера) то всё нормально открывается и отображается в QLabel. Ведь буффер получается везде одинаковый. почему картинка в не открывается после приёма? PS могу приложить полный код. Название: Re: не могу открыть QImage из принятого буффера. Отправлено: thechicho от Ноябрь 30, 2011, 19:16 Код
так попробуй Название: Re: не могу открыть QImage из принятого буффера. Отправлено: Sadovnik от Ноябрь 30, 2011, 19:23 Код
так попробуй Название: Re: не могу открыть QImage из принятого буффера. Отправлено: thechicho от Ноябрь 30, 2011, 21:28 а если так :)
QPixmap imgPixmap; imgPixmap.loadFromData(socket->readAll()); chat->setPixmap(imgPixmap); Название: Re: не могу открыть QImage из принятого буффера. Отправлено: Sadovnik от Ноябрь 30, 2011, 23:26 а если так :) QPixmap imgPixmap; imgPixmap.loadFromData(socket->readAll()); chat->setPixmap(imgPixmap); дело кажется в том, что сервер отправляет клиенту буффер порциями. Тоесть если у меня дописанный файл - конечно всё откроется без проблем. Но насколько я понял мне нужно завести ещё один буфер и дописывать в него эти порции, пока не получится полноценная картинка. Это должно быть легко, но пока я не понимаю как :) Название: Re: не могу открыть QImage из принятого буффера. Отправлено: andrew.k от Ноябрь 30, 2011, 23:46 например, запиши перед картинкой в сокет размер последующих данных.
При приеме сначала вычитываешь этот размер. Затем уже знаешь сколько данных ждать. И собирай их на здоровье, затем загружай, как все приедут. Название: Re: не могу открыть QImage из принятого буффера. Отправлено: Sadovnik от Декабрь 01, 2011, 00:42 например, запиши перед картинкой в сокет размер последующих данных. хорошая идея!При приеме сначала вычитываешь этот размер. Затем уже знаешь сколько данных ждать. И собирай их на здоровье, затем загружай, как все приедут. ну у меня первое, что в голову пришло, это сделать банальную проверку, пока loadfromdata не выдаст true, писать в буффер приходящие пакеты. как только нормально загрузилось, очищать этот накопительный буффер и ждать по новой. Название: Re: не могу открыть QImage из принятого буффера. Отправлено: andrew.k от Декабрь 01, 2011, 01:32 например, запиши перед картинкой в сокет размер последующих данных. хорошая идея!При приеме сначала вычитываешь этот размер. Затем уже знаешь сколько данных ждать. И собирай их на здоровье, затем загружай, как все приедут. ну у меня первое, что в голову пришло, это сделать банальную проверку, пока loadfromdata не выдаст true, писать в буффер приходящие пакеты. как только нормально загрузилось, очищать этот накопительный буффер и ждать по новой. |