Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   como unir un gif uno al lado de otro ? (https://www.clubdelphi.com/foros/showthread.php?t=72624)

gaston260 02-03-2011 14:13:31

como unir un gif uno al lado de otro ?
 
Hola gente me gustaria saver como puedo unir varios gif animados uno al lado de otro ! estuve buscando y no encuentro nada hasta ahora jeje lo unico que llegue a hacer es esto
Código Delphi [-]
unit Unit1;

interface

uses

JPEG, Windows, Classes, Graphics, Forms, Controls,
  FileCtrl, StdCtrls, ExtCtrls, Buttons, Spin, ComCtrls, Dialogs,
  Messages, SysUtils, Variants,
  GIFImage, ExtDlgs;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    OpenPictureDialog1: TOpenPictureDialog;
    OpenPictureDialog2: TOpenPictureDialog;
    OpenPictureDialog3: TOpenPictureDialog;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
OpenPictureDialog1.Execute;
Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
OpenPictureDialog2.Execute;
Image2.Picture.LoadFromFile(OpenPictureDialog2.Filename);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
OpenPictureDialog3.Execute;
Image3.Picture.LoadFromFile(OpenPictureDialog3.Filename);
end;


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++


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 + '\*.gif*', 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;

end.


despues del separador //++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hay un codigo que esta en http://www.clubdelphi.com/foros/show...=unir+imagenes espero me puedan ayudar !

Saludos !

Ñuño Martínez 02-03-2011 15:18:49

Yo lo veo complicado porque, ¿qué pasa si las imágenes tienen diferente número de fotogramas? ¿Y si usan paletas de color diferentes?

De todas formas, y por si te sirve, échale un vistazo a la bibliteca Vampyre Imaging. Es una de las que más me gustan para manipulación de imágenes "en general". Soporta muchos formatos, incluido el GIF, y posee muchos métodos y clases que facilitan todo tipo de modificaciones.

gaston260 03-03-2011 12:32:54

Gracias por responder mi consulta Ñuño Martinez lo voy a revisar y doy por descartado este tema ...

Saludos amigo !

escafandra 06-03-2011 15:03:11

Quizás mi respuesta llegue algo tarde pero pro si puede servir, revisa este hilo

Saludos.

gaston260 08-03-2011 02:34:02

muchas gracias Escafandra ! lo voy a revisar luego ahora estoy en otra aplicacion :D ! pero despues de verlo comento o pregunto , más seguro lo segundo :D

saludos !


La franja horaria es GMT +2. Ahora son las 07:34:56.

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