Cri_sys Master


Registrado: 13 Feb 2004Mensajes: 198Ubicación: Maringá, Brazil
|
Publicado: Jue 21 Feb, 2008 10:33 pm Asunto: Problema: Consumo CPU, EOutofResources, Compresion |
|
|
Estoy enviando imagenes a un servidor local por Indy!
Pero al enviar imagenes me consume mucha CPU, colocando todo mas lento, la unica forma seria colocar un Sleep grande, pero de esta forma los refresh de las iomagenes seran mas lentos :S
| Código: |
TJPEGImage *jpg=new TJPEGImage();
MSin= new TMemoryStream();
MSout= new TMemoryStream();
Bmp= new Graphics::TBitmap();
BmpFinal = new Graphics::TBitmap();
Bmp->PixelFormat=pf8bit;
BmpFinal->PixelFormat=pf24bit;
Bmp->Width=Screen->DesktopWidth;
Bmp->Height= Screen->DesktopHeight;
Bmp->Handle=CaptureScreen(GetDesktopWindow());
AddCursor(Bmp->Canvas->Handle);
BmpFinal->SetSize(x,y);
StretchBlt( BmpFinal->Canvas->Handle, 0, 0,x,y,Bmp->Canvas->Handle,0,0,Screen->Width,Screen->Height, SRCCOPY);
jpg->Assign( BmpFinal );
MSin->Position=0;
jpg->SaveToStream(MSin);
delete(jpg);
MSin->Position=0;
MSout->Position=0;
//ZLib->CompressStream(MSin,MSout,Z_BEST_COMPRESSION,GZIP_WINBITS,MAX_MEM_LEVEL,Z_DEFAULT_STRATEGY);
AContext->Connection->IOHandler->WriteLn(MSin->Size);
AContext->Connection->IOHandler->Write( MSin) ;
//CloseZip(hz);
MSout->Free();
MSin->Free();
delete Bmp;
delete BmpFinal;
::Sleep(1000);
|
un problema bien extranho q me ocurre es q cuando abro el form del server me da el error de EOutofResources, pero solo cuando el form del server esta activo, si esta minimizado no! no entiendo!
Creo que uno de los problemas de consumo de recurso es el jpg->SaveToStream(MSin);
ya que he hecho unas pruebas y me he dado cuenta que cuando va a guardar en un Stream consume mas 40% de la CPU.
Ahh yel problema de la compresion es con el TidCompressionZlibEx comprimo con
| Código: |
ZLib->CompressStream(MSin,MSout,Z_BEST_COMPRESSION,GZIP_WINBITS,MAX_MEM_LEVEL,Z_DEFAULT_STRATEGY);
|
y descomprimo con
| Código: |
frm->ZLib->DecompressGZipStream(MSin,MSout);
|
El problema parece ser cuando la imagen es "muy" grande me da un error de compresion.
Trate de utilizar otros metodos que no fuera el GZip pero no funcionó.
Espero Cualquier Ayuda, tengo ya tiempo perdido en esto y nada!!
Salu2![/code] _________________ Read what I mean, not what I write! |
|