![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Optimizar el envio de una imagen... (JPG)
Hola!
Gracias a un compañero del Club, a partir de un hilo anterior pude enviar imagenes a traves de la red. Pero lo que pasa es que como uso un TTimer para estar continuamente viendo desde el Servidor lo ke pasa en la PC Cliente, cuando mando la imagen parece 'cortar' o interrumpir el uso del S.O. normalmente. Ej: Si estas moviendo una ventana o algun proceso que use graficos. El cursor del mouse igual ke el grafiko se interrumpen. He aki el codigo ke uso para capturar la imagen del Escritorio: Código:
{Crea una imagen, capturando lo que existe en la pantalla actual} procedure TForm1.CrearImg(_path: string; _file:string); var imag: TImage; jpg: TJpegImage; desktop: TCanvas; str: TMemoryStream; //Stream donde cargaremos la imagen begin imag:=TImage.Create(Form1); imag.Width:=screen.Width; imag.Height:=screen.Height; desktop:=TCanvas.Create; with DeskTop do Handle := GetWindowDC (GetDesktopWindow) ; with Imag.Canvas do CopyRect (Rect (0, 0, screen.Width, screen.Height),DeskTop,Rect (0, 0, screen.Width, screen.Height)); jpg:=TJPegImage.Create; jpg.Assign(imag.Picture.Bitmap); imag.Free; jpg.CompressionQuality:=25; //Calidad del JPEG jpg.Compress; //Comprimimos la imagen str:=TMemoryStream.Create; jpg.SaveToFile(_path+_file); jpg.Free; desktop.Free; end; Código:
procedure TForm1.TimerSendImgTimer(Sender: TObject); var str: TMemoryStream; //Stream donde cargaremos la imagen mi_jpeg: TJPEGImage; strPath : string; begin strPath:=ExtractFileDir(Application.ExeName)+'\'; CrearImg(strPath,'imgtmp.jpg'); //Creamos la imagen mi_jpeg:=TJPEGImage.Create; mi_jpeg.LoadFromFile(strPath+'imgtmp.jpg'); //cargamos la imagen str:= TMemoryStream.Create; // iniciamos nuestro Stream mi_jpeg.SaveToStream(str); //asignamos la imagen al Stream NMStrm1.Host:=edServer.Text; // IP del PC donde enviaremos NMStrm1.PostIt(str); // enviamos el stream str.Free; //liberamos el stream mi_jpeg.Free; // liberamos el JPEG end; Código:
procedure Código:
TfrmMain.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream); var mi_jpeg: TJPEGImage; //nuestra imágen strPath:string; begin strPath:=ExtractFileDir(Application.Exename)+'\'; // Le sumamos una diagonal inversa (aunke no aparezca en este post) mi_jpeg:= TJPEGImage.Create; mi_jpeg.LoadFromStream(strm); mi_jpeg.SaveToFile(strPath+'Imagen.jpg'); ImageRecFromClient.Picture.LoadFromFile(strPath+'Imagen.jpg'); end; Quisiera saber como poder hacer un envio mucho más rapido, para no interferir con el uso de la PC Cliente. Como lo hace el Neetmeting cuando se comparte el Escritorio el envio de la imagen depende de la conexion es cierto, pero no se nota que lo estes haciendo. Saludos y espero que alguien me pueda ayudar.
__________________
Guía de Estilo. Última edición por madman fecha: 13-07-2003 a las 01:41:11. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
|