PDA

Ver la Versión Completa : Tamaño de una imagen


seduerey
02-02-2004, 11:16:54
Me gustaría saber cómo cambiar el tamaño (manteniendo la proporción o no) de una imagen (jpg, gif, bmp...) guardada en disco.
También me gustaría saber si es posible abrir o previsualizar un .PSD (archivo de photoshop).
Gracias y un saludo

Gydba
02-02-2004, 13:52:04
No tengo una respuesta exacta, pero quizás te pueda ayudar visitar esta web:
http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/ImageProcessing.htm

Que tiene variada información, así como ejemplos en código fuente, sobre procesado de imágenes.

En cuanto a lo de los archivos Photoshop desde VB había manera de abrirlos, calculo que delphi no se debe quedar atrás.

delphi.com.ar
02-02-2004, 16:07:43
Te recomiendo buscar información sobre el método StretchDraw del TCanvas, o funciones como StretchBlt...

Saludos!

cht666cht
11-02-2004, 22:00:05
yo lo hago asi:

Bitmap1 := TBitmap.Create;
Bitmap2 := TBitmap.Create;
try
Bitmap1.LoadFromFile('c:\imagen.bmp');
Bitmap2.PixelFormat := Bitmap1.PixelFormat;
Bitmap2.Width := 200; // nuevo tamaño
Bitmap2.Height := 200;
Bitmap2.Canvas.StretchDraw(0, 0, Bitmap2.Width, Bitmap2.Height, Bitmap1);
Bitmap2.SaveToFile('c:\imagencambiada.bmp');
finally
Bitmap2.Free;
Bitmap1.Free;
end;



y si es un jpg:

JPG := TJPEGImage.Create;
Bitmap := TBitmap.Create;
try
JPG.LoadFromFile('c:\imagen.jpg');
Bitmap.PixelFormat := pf24Bit;
Bitmap.Width := 200; // nuevo tamaño
Bitmap.Height := 200;
Bitmap.Canvas.StretchDraw(0, 0, Bitmap.Width, Bitmap.Height, JPG);
JPG.Assign(Bitmap);
JPG.SaveToFile('c:\imagencambiada.jpg');
finally
Bitmap.Free;
JPG.Free;
end;

lo hago asi porque no puedes acceder directamente al canvas de un jpegimage, pero si que puedes hacerlo con un bitmap, y luego con el assign lo conviertes a jpg.

para usar el tjpegimage añade la unit JPEG al uses.

espero que te sirva, bueno, que te funcione, pq lo he escrito de memoria :)

bububin
31-05-2004, 19:20:06
yo lo hago asi:

Bitmap1 := TBitmap.Create;
Bitmap2 := TBitmap.Create;
try
Bitmap1.LoadFromFile('c:\imagen.bmp');
Bitmap2.PixelFormat := Bitmap1.PixelFormat;
Bitmap2.Width := 200; // nuevo tamaño
Bitmap2.Height := 200;
Bitmap2.Canvas.StretchDraw(0, 0, Bitmap2.Width, Bitmap2.Height, Bitmap1);
Bitmap2.SaveToFile('c:\imagencambiada.bmp');
finally
Bitmap2.Free;
Bitmap1.Free;
end;



y si es un jpg:

JPG := TJPEGImage.Create;
Bitmap := TBitmap.Create;
try
JPG.LoadFromFile('c:\imagen.jpg');
Bitmap.PixelFormat := pf24Bit;
Bitmap.Width := 200; // nuevo tamaño
Bitmap.Height := 200;
Bitmap.Canvas.StretchDraw(0, 0, Bitmap.Width, Bitmap.Height, JPG);
JPG.Assign(Bitmap);
JPG.SaveToFile('c:\imagencambiada.jpg');
finally
Bitmap.Free;
JPG.Free;
end;

lo hago asi porque no puedes acceder directamente al canvas de un jpegimage, pero si que puedes hacerlo con un bitmap, y luego con el assign lo conviertes a jpg.

para usar el tjpegimage añade la unit JPEG al uses.

espero que te sirva, bueno, que te funcione, pq lo he escrito de memoria :)
Como se puede añadir en el uses el JPEG?. A mi me da error y me dice que no encuentra el jpeg.dcuil.. QUe puede pasar?

delphi.com.ar
31-05-2004, 19:29:07
Como se puede añadir en el uses el JPEG?. A mi me da error y me dice que no encuentra el jpeg.dcuil.. QUe puede pasar?
¿Cuál es el error que te da? File Not Found jpeg.dcu
¿Tienes la dcu en $(delphi)\Lib?

Saludos!

delphi.com.ar
31-05-2004, 19:34:09
Recién ahora me doy cuenta que posteaste esto en otro hilo aclarando que se trata de Delphi 8. Te recomiendo no repetir las preguntas en hilos diferentes, te respondo en el otro.

http://www.clubdelphi.com/foros/showthread.php?t=7539

El_Perrito
26-08-2004, 03:10:20
Aunque este hilo ya tiene algun tiempo, les doy las gracias porque estaba a punto de tirarme del edificio cuando encontre aqui la respuesta que andaba buscando(eso de tirarme es broma), necesitaba desplegar un jpeg en un drawgrid y si lo desplegaba pero de un tamaño mas grande que el tamaño de las celdas de mi DrawGrid y lo solucione con eso del StretchDraw del TCanvas

son unos genios.

Y coincido con ustedes: "Antes de preguntar hay que buscar"

Un Hermano Mexicano los Saluda :D

jachguate
26-08-2004, 10:52:55
Gracias, El_perrito, por tu buen ejemplo. :D

Hasta luego.

;)