Ver Mensaje Individual
  #2  
Antiguo 16-09-2007
l30 l30 is offline
Miembro
 
Registrado: jun 2007
Posts: 36
Reputación: 0
l30 Va por buen camino
Hola fide, hace un tiempo atrás me hizo falta hacer un detector de movimientos, por lo que tenia que comparar, dos imagines par ver si sufrían algún cambio allí te va parte del código. De lo otro que hablas es de los archivos que no sean tan pesado bueno en el otro post que pusiste te explico como llevar la imagen de .bmp que se llevaría 3megas a .jpg que en mi caso no pasa de los 20 kb pienso que quede resuelto tu problema, el codigo que te puse aquí le faltan algunas variables por declarar que pienso que no haga falta ponerlas, de todas manera si tienes problemas me dices. NO te escribo el código para mandar la foto por la red porque parece que ya lo tienes echo, si te hace falta dímelo también.
Código Delphi [-]
 uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ExtCtrls, Clipbrd, ComCtrls, shellapi, IdHTTP, IdSMTP, IdMessage,
    Sockets;
   
  //**************************************
    
  var
    error : int64;
    i, j : integer;
    hayMovimiento : boolean;
  begin
    if idResultado <> 0 then
    begin
      try
        //capturamos la imagen actual
        SendMessage(idResultado, WM_CAP_EDIT_COPY, 0, 0);
        imagenActual.Assign(imagenAnterior);
        //la imagen anterior está guardada en el portapapeles, la obtenemos
        imagenAnterior.LoadFromClipBoardFormat(cf_BitMap,
            ClipBoard.GetAsHandle(cf_Bitmap), 0);
        error := 0;
        //recorremos todos los píxeles de la imagen actual
        for i := 0 to imagenActual.Width do
        begin
          for j:= 0 to imagenActual.Height do
          begin
            //comparamos el pixel de la imagen actual con el correspondiente
            //a la imagen anterior
            error := error + abs(imagenActual.Canvas.Pixels[i, j] -
                imagenAnterior.Canvas.Pixels[i, j]);
          end;
        end;
        //mostramos el porcentaje de error
        txtError.Text := FloatToStr(trunc(error / 20000000)/100);
   
        
      except
        bDetenerClick(Self);
        raise;
      end;
      hayMovimiento := tbSensibilidad.Position < StrToFloat(txtError.Text);
      if (hayMovimiento and Capturar) then
      begin
        imagenAnterior.SaveToFile(ExtractFilePath(txtUbicacionImg.Text) +
            IntToStr(Contador) + ExtractFileName(txtUbicacionImg.Text));
        imagenActual.SaveToFile(ExtractFilePath(txtUbicacionImg.Text) +
            IntToStr(Contador + 1) + ExtractFileName(txtUbicacionImg.Text));
        Contador := Contador + 2;
      end;
      if hayMovimiento then
         begin
           txtError.Color := clRed;
           TcpClient1.Active:= true;
           TcpClient1.Active:= false;
   
         end  
      else
        txtError.Color := clWhite;
    end
    else
    begin
      bDetenerClick(Self);
    end;
  end;
Responder Con Cita