Текущий архив: 2006.05.07;
Скачать: CL | DM;
ВнизStream потоки и кодировка BMP,JPG Найти похожие ветки
← →
Vovanchik (2006-01-17 12:36) [0]Совсем запутался!!! Тут такое дело:
Не могу организовать процесс передачи картинки и её получение, то есть картинку потоком я отправить могу но преобразовать из потока не получаеться постоянно система ругаеться. Если кто втречался с этой проблемой и знаеет как передать картинку через поток. Процесс передачи происходит от клиента к серверу - допустим через TCP/IP. Хотелось бы организовать все через (Serversocket & Clientsocket)
Заранее Огромное Спасибо!!!!!
← →
Digitman © (2006-01-17 12:44) [1]
> Если кто втречался с этой проблемой
нет никакой проблемы.
Она , эта проблема, ТОБОЙ надумана.
← →
Vovanchik (2006-01-17 13:52) [2]Ну хотя бы примерчик скиньте!!!
← →
Roll_and_Rock (2006-01-17 18:48) [3]//Вот пример для CBuilder`а. Не проверял.
//-----http://forum.vingrad.ru -----------------------------------------------
Со стороны, откуда посылаем (у нас это клиент), пишем:
TFileStream* str = new TFileStream("M:\\MyFile.jpg",fmOpenRead);
//ИЛИ, если мы работаем без сохранения (тогда не создается файл)
TMemoryStream* str = new TMemoryStream ();
str->Position = 0;
Image1->Picture->Bitmap->SaveToStream(str);
//и, наконец, шлем на сервер битмап
str->Position = 0;
ClientSocket1->Socket->SendStream(str);
Обратите внимание, не забывайте перед каждой операцией с потоком устанавливать позицию в 0!!! Иначе получим не то, что хотелось бы
Ну а со стороны приема (у нас это, соответственно, серверсокет), в событии приема пишем:
int ibLen = ServerSocket1->Socket->ReceiveLength();
char* buf= new char[ibLen+1];
TMemoryStream* str = new TMemoryStream();
str->Position = 0;
ServerSocket1->Socket->ReceiveBuf((void*)buf,ibLen);
str->WriteBuffer((void*)buf,ibLen);
str->Position = 0;
Image1->Picture->Bitmap->LoadFromStream(str);
//или
str->SaveToFile("M:\\MyFile.jpg");
Ну и ессно, как говорит Bigbrother, сделал дело - вызови деструктор! То есть почистить за собой надо, не знаю как в Паскале, но в сях мне надо удалить str и buf.
//----------------------------------------------------------------------------
← →
Ботвин Дмитрий (2006-01-18 14:43) [4]>преобразовать из потока не получаеться постоянно система ругаеться
Это потому что ты про Seek даже не вспомнил при восстановлении, а вообще
в таких случаях хорошо помагает SysErrorMessage(GetLastError) - он как раз
об этом и пишет :-))
Страницы: 1 вся ветка
Текущий архив: 2006.05.07;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.011 c