Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Rotar imagen jpg (https://www.clubdelphi.com/foros/showthread.php?t=50077)

ElDioni 07-11-2007 17:44:56

Rotar imagen jpg
 
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

Cita:

Empezado por ElDioni (Mensaje 244214)
Hola a todos, espero me puedan ayudar, he estado buscando por los foros pero no he encontrado nada que me pueda ayudar

Viste esto

y Esto otro

Seguramente la piedra filosofal de los gráficos

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.
Código Delphi [-]
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
Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 13:09:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi