Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   (OPINION) Componente para redimensionar imagenes (https://www.clubdelphi.com/foros/showthread.php?t=31642)

ANG4L 12-05-2006 23:16:14

(OPINION) Componente para redimensionar imagenes
 
Buenas gente !
A ver.... lo que necesito hacer es simplemente si una imagen, es mas grande que una determinada medida, ajustarla (proporcionalmente) y guardarla (preferentemente) para no tener que ajustarla cada vez que la quiera volver a cargar (lo mas logico del mundo :p )

No necesito grandes componentes de manejo de imagenes, ni nada, complejo

Que me recomiendan?

Saludos, gracias ! :D

seoane 13-05-2006 00:05:50

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;

ANG4L 13-05-2006 00:17:18

Solucionado
 
Genial, yo creo que con eso me alcanzara. No habia nunca antes tenido que manejar imagenes dentro de un programa, asi que como primeros pasos, me la hiciste bastante sencillo, se AGRADECE MUCHO.

Saludos, ;)

petete2008 24-02-2010 13:29:25

Y se podría hacer que tu selecciones la imagen que deseas en el formato que quieras y él mire que extensión es y la redimensione.
Es que con tu método solo sirve para bmp y jpg ¿y si fuera tif o gif?
Gracias

petete2008 08-11-2011 19:15:20

¿Se podría central verticalmente y horizontalmente una imagen en un cuadrado de unas ciertas dimensiones haciendo que aparezcan franjas blancas en los lados si fuese necesario?

Casimiro Notevi 08-11-2011 19:29:31

Por favor, recuerda nuestra guía de estilo, gracias.


La franja horaria es GMT +2. Ahora son las 17:31:19.

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