Przesyłanie obrazu jpeg TServerSocket

0

Od kilku dni nie mogę sobie poradzić z następującym problemem. Chcę za pomocą TServerSocket przesłać do klienta pomniejszony zrzut ekranu skompresowany do formatu JPG, jednak za każdym razem wychodzi mi na klienci pusty obrazek.

float skalax, skalay;
            int i,j,x1,y1;
            TCanvas *Can=new TCanvas;
            Graphics::TBitmap *B=new Graphics::TBitmap;
            Can->Handle=GetWindowDC(GetDesktopWindow());
            B->Width=x;
            B->Height=y;
            skalax = (Screen->Width)/(B->Width);
            skalay = (Screen->Height)/(B->Height);
            for (i=0; i<=B->Width; i++)
                for (j=0; j<=B->Height; j++)
                {
                        x1=i*skalax;
                        y1=j*skalay;
                        B->Canvas->Pixels[i][j]=Can->Pixels[x1][y1];
                }

            delete Can;
            TJPEGImage *jpg = new TJPEGImage();
            jpg->CompressionQuality =80;
            jpg->Assign(B);
            jpg->Compress();

            TMemoryStream *mem=new TMemoryStream;
mem->Position=0;
                serwer->Memo1->Lines->Add(IntToStr(mem->Size));
B->SaveToStream(mem);
int g=mem->Size;
for(i=0;i<serwer->ServerSocket1->Socket->ActiveConnections;i++)
            {
                serwer->ServerSocket1->Socket->Connections[i]->SendBuf(&g,sizeof(g)+1);
                serwer->ServerSocket1->Socket->Connections[i]->SendStream(mem);
            } */
0

nie znam sie na BCB, ale sadzac po linijkach:

TJPEGImage *jpg = new TJPEGImage();
jpg->CompressionQuality =80;
jpg->Assign(B); ///***
jpg->Compress();
..
B->SaveToStream(mem);

to do strumienia wrzucasz oryginalna bitmape, nie jpg'a.. no, chyba ze w oznaczonej linijce Assign powoduje ze TJPEGImage przejmuje kontrole nad obiektem TBitmap

..a poza tym, skoro obrazek dolatuje tylko sie wyswietla 'pusty' - moze problem jest u klienta z poprawnym odebraniem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0