Ver Mensaje Individual
  #2  
Antiguo 25-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Una posible solucion puede ser esta, una funcion que concatena todas las imagenes jpg de un directorio en un tira:

Código Delphi [-]
uses JPEG;

function Max(i,j: Integer): Integer;
begin
  if i > j then
    Result:= i
  else
    Result:= j;
end;

procedure Concatenar(Destino, Origen: TGraphic);
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    Bitmap.Width:= Max(Origen.Width, Destino.Width);
    Bitmap.Height:= Origen.Height + Destino.Height;
    Bitmap.Canvas.Draw(0,0,Origen);
    Bitmap.Canvas.Draw(0,Origen.Height,Destino);
    Destino.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;


// Directorio es el directorio con las imagenes
// y Resultado el archivo jpg donde se guarda la tira
procedure HacerTira(Directorio: string; Resultado: string);
var
  SR: TSearchRec;
  Tira: TBitmap;
  Temp: TJPEGImage;
begin
  Tira:= TBItmap.Create;
  Temp:= TJPEGImage.Create;
  try
    if Copy(Directorio, Length(Directorio), 1) = '\' then
      Delete(Directorio, Length(Directorio), 1);
    if FindFirst(Directorio + '\*.jp*', faAnyfile, SR) = 0 then
    repeat
      Temp.LoadFromFile(Directorio + '\' + SR.Name);
      Concatenar(Tira,Temp);
    until FindNext(SR) <> 0;
    FindClose(SR);
    Temp.Assign(Tira);
    Temp.SaveToFile(Resultado);
  finally
    Tira.Free;
    Temp.Free;
  end;
end;

Aunque hice algunas pruebas y se queda sin memoria bastante rapido si las imagenes son muchas y grandes . Pero puede que te sirva para tener algunas ideas.

Última edición por seoane fecha: 25-05-2006 a las 13:23:30.
Responder Con Cita