PDA

Ver la Versión Completa : como saber y cambiar el tamaño a una imagen


Negriz
15-05-2008, 16:21:42
hola mi pregunta es como puedo obtener el tamaño de una imagen; osea tengo la ruta de la img y lo que deseo es conocer su tamaño en pixeles y modificarlo???

como lo hago.

Gracias.

Neftali [Germán.Estévez]
15-05-2008, 17:15:30
Una forma fácil es cargarlo sobre un TBitmap, o similar y comprobar las propiedades de alto y ancho.
Para modificar el tamaño, puedes revisar la sección de trucos del clubdelphi, porque creo que hay alguno que te puede servir.

Negriz
15-05-2008, 19:39:51
voy a mirar.

La idea es como darle un resize a una copia del archivo original; es decir con la ruta, copiarla, modificar el tamaño y guardarla en el dico duro.

Negriz
19-05-2008, 00:57:07
hola com oestan utlize un TBitmap y si funciona cuando le cambio el tamaño pero lo que hace es poner un espacio blanco alrededor de la imagen... no hay manera de hacer que la imagen quede estrecha y que al cambiar el alto y el ancho no pase esto....

ademas me gustaria hacer esto con imagenes en bmp y jpg lo que no puedo hacer solo con el bitmap..
como hago para poder modificar el ancho y largo de bitmaps y jpg pero que queden estrechas.

gracias.

????

escafandra
19-05-2008, 08:19:52
Revisa Strech.

Saludos.

Negriz
26-05-2008, 19:39:46
Revisa Strech.

Saludos.
cunado uso TBitmap este atribuo no aparece en las opciones que me brinda builder....

creeme ya lo intente.

Saludos y gracias.

escafandra
26-05-2008, 21:44:38
Stretch es una propiedad de TImage, no del Bitmap.
No estoy seguro si afecta al TGraphic o al Bitmap del TPicture del TImage en cuestión pero en caso de afectar al graphic, lo conviertes a Bitmap (Assign)

También puedes revisar las API StretchDIBits y StretchBlt, es posible que te sirva de ayuda.

Saludos.

Negriz
27-05-2008, 22:35:14
Stretch es una propiedad de TImage, no del Bitmap.
No estoy seguro si afecta al TGraphic o al Bitmap del TPicture del TImage en cuestión pero en caso de afectar al graphic, lo conviertes a Bitmap (Assign)

También puedes revisar las API StretchDIBits y StretchBlt, es posible que te sirva de ayuda.

Saludos.
intenté redimencionar le Timage y despues pasarlo al bitmap para poder guardalro con esas dimenciones pero no funciona, picture del timage se paso al bitmap como si le hubiera dado loadFormFile al bitmap...

y otra cosa si el Tpicture de la Timage es con extencion .jpg como hago????

voy a mirar las apis que me pasaste...

mira mi idea es hacer cambiar el tamaño de la imagen a la de la resolucion del monitor...

depronto tengas ideas de como hacerlo...

Gracias.

escafandra
27-05-2008, 22:44:39
Bueno, ¿no estarás usando el Bitmap del mismo TImage (Image->Picture->Bitmap) para asignar el resultado?. Si es así, eso no te funcionará. Debes crear un TBitmap nuevo y asignarle la imagen cambiada de tamaño.

Si miras las API recuerda que utilizan un DC, (Canvas para las VCL) y que tendrás que volcar su imagen en un Bitmap.....

De todas formas no esperes resultados espectaculares tipo Photoshop.

Saludos.

Negriz
08-06-2008, 17:22:03
Bueno, ¿no estarás usando el Bitmap del mismo TImage (Image->Picture->Bitmap) para asignar el resultado?. Si es así, eso no te funcionará. Debes crear un TBitmap nuevo y asignarle la imagen cambiada de tamaño.

Si miras las API recuerda que utilizan un DC, (Canvas para las VCL) y que tendrás que volcar su imagen en un Bitmap.....

De todas formas no esperes resultados espectaculares tipo Photoshop.

Saludos.
ok. Creo un TBitmap nuevo, modifico el alto y largo de la TImage, al bitmap le asigno el Bitmap de la TImage, (tambien puedo asignarle el picture con el comando asign)... pero no me funciona; cuando lo guardo me sale con el tamaño original...
Sobre el "Canvas", lo he visto pero no se como funciona ni para que sirve.

Voy a buscar.

Gracias por tu respuesta.

escafandra
09-06-2008, 00:00:21
Bueno, vamos a ver si tratamos de simplificarlo.

Analiza este código y experimenta con el. Image1 es un TImage en Form1 al que se le carga una imagen para probar. Este código cambia el tamaño de la imagen, pero... no es photoshop...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TImage *Image = new TImage(this);
// Aquí dimensionamos la nueva imagen....
Image->Height = 200;
Image->Width = 200;
// Preparamos para la función StretchDraw
TRect R(0, 0, Image->Height, Image->Width);
// Copiamos la imagen cambiada de tamaño a Image desde Image1...
Image->Canvas->StretchDraw(R, Image1->Picture->Graphic);
// La salvamos para ver que ha pasado. ....EURECA....
Image->Picture->Graphic->SaveToFile("a.bmp");
}Saludos.