PDA

Ver la Versión Completa : Reducir el tamaño de una imagen


pablopessoa
10-10-2008, 01:31:15
hola!!
tengo el siguiente problema : yo necesito en mi aplicacion almacenar fotos en un tamaño de 640x480, pero puede pasar que me ingresen una imagen de 1024x768.
como puedo hacer, al momento de guardar la imagen, que sin importar que tamaño tenga la foto original yo la pueda guardar con un tamaño de 640x480??

aclaro que ya hice esta pregunta y me dijeron que mirara el truco 467, pero primero que no tengo idea lo que es un thumbnail (perdon por lo bruto) y el codigo lo mire.. pero la verdad no lo entiendo... :S
Muchas gracias y tengan paciencia.. hace poquito empeze con Delphi.
Saludos!!

Neftali [Germán.Estévez]
10-10-2008, 09:23:32
ya hice esta pregunta y me dijeron que mirara el truco 467, pero primero que no tengo idea lo que es un thumbnail (perdon por lo bruto)

Esa palabraje se usa para referirse a "miniaturas" de las imágenes; Lo qe normalmente se usa para ganerar una vista previa de una carpeta o de una imagen. La misma imagen, pero más pequeña para que ocupe mucho menos tamaño.

A parte del truco, si buscas por los foros creo que te saldrán mensajes de cómo cambiar el tamaño de una imagen, utilizando un Canvas; He algo que ya se ha discutido.

Northern
10-10-2008, 10:02:26
Mira esto (http://www.koders.com/delphi/fidEF9D7C8EF086D60AA6AC17BE4A5E989F3932ECC5.aspx?s=stretch) a ver si te vale y en cualquier caso busca por Stretch o Resize.


Saludos

pablopessoa
10-10-2008, 13:14:22
antes que nada gracias por la respuesta, pero el problema es que ese link que me mostraste funciona con imagenes en bitmap y yo estoy usando Jpeg.... tendria que haberlo mencionado antes.. disculpenme.
probe con la linea : jpg.SetSize (ancho, largo); pero me da error, dice que no puede cambiarse el tamaño de la imagen...

pablopessoa
10-10-2008, 13:53:39
bueno queria comentarles que segui probando y logre achicar la foto.. de una manera muy enroscada.. convierto el jpg a bitmap para poder modificar el tamaño y luego lo guardo como jpg otra ves.... pero eso me da dos problemas

1- la imagen pesa como bitmap.. por mas que la extension sea .jpg
2- se me corta la imagen.. es decir.. como la imagen era enorme.. no se ajusta a su nuevo tamaño, sino que me muestra el pedazo de foto que entre en la nueva resolucion. les muestro el codigo para que me digan... bueno en fin que me digan que soy un bruto :P


Jpg := TJpegImage.Create;
Jpg.LoadFromFile(ruta);
MyBMP := TBitmap.Create;
with MyBMP do
begin
Canvas.
Width := 640;
Height := 480;
Canvas.Draw(0,0,Jpg);
SaveToFile('c:\'+nombrefoto+'.jpg');
Free;
end;
JPG.FREE;

perdon por este post largo

cHackAll
10-10-2008, 22:19:21
Hola pablopessoa, por favor utiliza las etiquetas [delph¡] Tu codigo aquí [/delphi]

uses jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; jpg: TJPEGImage;
begin
jpg := TJPEGImage.Create;
jpg.LoadFromFile('c:\windows\web\wallpaper\cazador.jpg');
bmp := TBitmap.Create;
bmp.Assign(jpg);
bmp.Width := 640;
bmp.Height := 480;
jpg.Assign(bmp);
bmp.Destroy;
jpg.SaveToFile('c:\2.jpg');
jpg.Destroy;
end;

Si quieres una imagen que no pierda su relacion de aspecto que sea sencilla y de conversion rápida, manejandolo como thumbnail, puedes usar lo dicho aquí (http://www.clubdelphi.com/foros/showthread.php?t=59973) asi:

procedure TForm1.Button2Click(Sender: TObject);
var Image: TBitmap;
begin
Image := GetImage('ClubDelphi.jpg', 640);
if Assigned(Image) then
begin
Image1.Picture.Assign(Image);
Image.Destroy;
end;
end;

Saludos

pablopessoa
11-10-2008, 13:18:40
gracias lo voy a probar y perdon por lo del codigo, ya me preguntaba yo como hacian ustedes para que les salga tabulado y con color..... jajajajaajaj
un saludo!!!