Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
6-1137414584
Dark Lord
2006-01-16 15:29
2006.05.07
Как в WebBrowser заменить контекстное меню своим собственным


3-1142000660
Exciter
2006-03-10 17:24
2006.05.07
Fb1.5 Как разрешить юзеру ввести в поле


4-1139720990
ArchValentin
2006-02-12 08:09
2006.05.07
Проверка процессов


15-1144912673
Zhekson
2006-04-13 11:17
2006.05.07
Установка MS SQL


1-1143758241
vagra
2006-03-31 02:37
2006.05.07
Как узнать тип диска




   Наверх