PDA

Ver la Versión Completa : Rotar imagen jpg


ElDioni
07-11-2007, 17:44:56
Hola a todos, espero me puedan ayudar, he estado buscando por los foros pero no he encontrado nada que me pueda ayudar, antes que nada decir que trabajo con delphi 2005.
Bueno, el caso es tengo un formulario, hay un TImage y en ese TImage cargo un archivo .jpg. Lo que quiero saber es si existe alguna forma de poder rotar esta imagen, 90º, 180º,etc. si alguien me puede ayudar le estaré muy agredecido, y si saben con seguridad que esto no se puede hacer también agradecería que me lo dijeran para no darle más vueltas al asunto.
Muchas gracias por anticipado

ArdiIIa
07-11-2007, 18:44:23
Hola a todos, espero me puedan ayudar, he estado buscando por los foros pero no he encontrado nada que me pueda ayudar


Viste esto (http://www.clubdelphi.com/foros/showthread.php?t=6238)

y Esto otro (http://www.clubdelphi.com/foros/showthread.php?t=2541)

Seguramente la piedra filosofal de los gráficos (http://www.efg2.com/Lab/Library/Delphi/Graphics/ImageProcessing.htm)

ElDioni
08-11-2007, 12:06:57
yo ya habia probado los trucos de estos hilos a los que me haces referencia y efectivamente cuando cargo un bitmap si me lo gira y el codigo funciona y tal, pero cuando lo que cargo es un archivo jpg el dibujo desaparece, y hasta ahí he llegado, espero me puedan ayudar y gracias por tu respuesta ardilla.

ArdiIIa
08-11-2007, 13:23:34
En un TImage hay que distinguir el Picture si es bmp u otro tipo dado que el tratamiento es diferente.
En todo caso tú quieres rotar un jpg dentro de un TImage pues prueba con este código.

procedure TForm1.Button1Click(Sender: TObject);
Var
Bmp1,bmp2 : TBitmap;
x,y : integer;
begin

Bmp1 := TBitmap.Create;
Bmp1.Assign(Image1.Picture.Graphic);

Bmp2 := TBitmap.Create;
Bmp2.Width:=Bmp1.height;
Bmp2.Height := Bmp2.width;

for x:=0 to Bmp1.Height -1 do
begin
for y:=0 to Bmp1.Width -1 do
begin
Bmp2.Canvas.Pixels[x,(Bmp1.Height -1) - y]:= Bmp1.Canvas.Pixels[y,x];
end;
end;

Image1.Picture.Graphic.Assign(Bmp2);

Image1.Refresh;

end;


El resultado final, será cosa tuya. :D

ElDioni
08-11-2007, 16:41:26
Muchas gracias ardilla por tu tiempo, efectivamente he probado el codigo que me propones y me gira el jpg, no se lo que habia hecho antes, con tu ayuda ya me las arreglo para adaptarlo a lo que necesito, de nuevo gracias me ha sido de gran ayuda.

ElDioni
08-11-2007, 16:50:44
Creo que he hablado de más antes de avanzar.
Tengo puesto el TImage la propiedad proportional a true para que si la imagen es grande o pequeña se cargue siempre dentro de unos límites. Pero al hacerla rotar pierde esta propiedad y aunque la vuelva a pone a true no funciona, tampoco funciona el strech ya que la imagen sale cortada. alguna idea.

ElDioni
09-11-2007, 11:05:50
Al final lo que he hecho es ponero el autosize del TImage a true, el proportional a false, he igualado el Width y el Heigth del bmp1 al del TImage, realizo el codigo que me facilito ardilla y luego vuelvo a ponero el autosize a false y el proportional a true, de esta forma consigo que no me recorte el dibujo, ahora lo que que pasa es que cuando pongo

form25.print

me salta un error diciendo que "is not a valid bmp image", le daré unas cuantas vueltas más a ver si descubro algo, mientras tanto si alguien me puede ayudar, pues como siempre gracias.