Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2003
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
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;
::: Este es el Codigo del TTimer (cada 5 segundos) :::
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;
Todo eso es para el envío de la imagen el Servidor es el que recibe la imagen por medio de:

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;
Como es una Red Local (LAN) el envio de la imagen ( a veces llega ser del tamaño de 100 Kb, dependiendo) la aplicacion hace lo que les platicaba al principio.

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.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:48:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi