Ver Mensaje Individual
  #2  
Antiguo 13-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
Para redimensionar una imagen no hace falta instalar un componente, es una tarea sencilla que podemos hacer hacer nosotros por codigo.

Aqui te dejo 2 funciones que para redimensionar una imagen:
Código Delphi [-]
// Esta cambia el alto y ancho, estirando la imagen si es necesario
procedure Redimensionar(Imagen: TGraphic; Ancho, Alto: Integer);
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    Bitmap.Width:= Ancho;
    Bitmap.Height:= Alto;
    Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Imagen);
    Imagen.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;

// Esta otra mantiene la relacion entre alto y ancho
procedure Proporcional(Imagen: TGraphic; Ancho, Alto: Integer);
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try
    if  (Ancho/Imagen.Width) < (Alto/Imagen.Height) then
      Alto:= Trunc((Ancho*Imagen.Height)/Imagen.Width)
    else
      Ancho:= Trunc((Imagen.Width*Alto)/Imagen.Height);
    Bitmap.Width:= Ancho;
    Bitmap.Height:= Alto;
    Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Imagen);
    Imagen.Assign(Bitmap);
  finally
    Bitmap.Free;
  end;
end;

Para usarlas lo puedes hacer algo asi:
Código Delphi [-]
uses JPEG;

var
  Jpg: TJPEGImage;
begin
  Jpg:= TJPEGImage.Create;
  try
    Jpg.LoadFromFile('d:\Original.jpg');
    Redimensionar(Jpg,100,100);
    Jpg.SaveToFile('d:\Copia.jpg');
  finally
    Jpg.Free;
  end;
end;

O tambien con un btimap
Código Delphi [-]
var
  Bmp: TBitmap;
begin
  Bmp:= TBitmap.Create;
  try
    Bmp.LoadFromFile('d:\Original.bmp');
    Proporcional(Bmp,100,100);
    Bmp.SaveToFile('d:\Copia.bmp');
  finally
    Bmp.Free;
  end;
end;
Responder Con Cita