Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2007
djmetroid djmetroid is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
djmetroid Va por buen camino
Unhappy Como rotar una imagen en delphi x grados SIN DEFORMARLA?

ya he visto los codigos 451 y 452 en trucomania que rotan una imagen x grados, pero hay un gran problema, que al ir rotando la imagen se va deformando y poniendose un fondo negro o blanco, por ejemplo, si quiero rotarla 45 grados se forma un octagono que afecta la imagen y el fondo es negro o blanco, ya puse transparencias, autosize, etc y aun sigue deformandose y necesito una aplicacion que rote imagenes 45 grados minimo, por favor si alguien sabe como solucionar ese problema se lo agradeceria
gracias
Responder Con Cita
  #2  
Antiguo 28-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé si será matar moscas a cañonazos, pero, la librería Imaging para Delphi no sólo puede rotar imágenes (que lo hace, y muy bien) sino que puede hacer otras muchas cosas más, como convertir entre decenas de formatos de imagen. No es complicada de usar, por lo menos para lo que te propones, es de código abierto y gratuita, y, ya te digo, yo la he usado y aun uso con buenos resultados.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 03-12-2007
mbelda mbelda is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 13
Poder: 0
mbelda Va por buen camino
Yo lo he intentado con imaging library pero no soporta TIFF, alquien sabe de alguna otra utilidad o librería que soporte TIFF, tengo que rotar imagenes TIFF, por ahora lo hago desde línea de comandos con un programa al que le paso parametros (rotar.exe .\imagen.tif rotate=90), pero no me acaba de convencer porque hasta que no se rote no puedo seguir con la ejecución del procedimiento, y la verdad es que es un apaño, estoy intentando encontrar algo para hacerlo desde codigo, pero en fin, estoy ciego de buscar por internet y no encontrar nada.
Responder Con Cita
  #4  
Antiguo 03-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

La librería susomentada soporta el formato TIFF. Yo juraría que este formato está soportado, a lo menos en parte. No recuerdo ahora mismo si puedes rotar una imagen TIFF, directamente, pero, lo que es casi seguro es que puedes convertir una imagen TIFF a BMP, por ejemplo, rotar dicha imagen BMP, y luego guardarla de nuevo en formato TIFF. Corrígeme si me equivoco.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-12-2007 a las 19:25:32.
Responder Con Cita
  #5  
Antiguo 03-12-2007
mbelda mbelda is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 13
Poder: 0
mbelda Va por buen camino
Pues no se si te equivocas porque no lo he probado, pero ahora que lo dices lo voy a ver posiblemente tengas razon, pero no veas la historia, convierte, rota y vuelve a convertir, pero si funciona, pues no es mala opcion. Gracias, por la idea, no me lo había propuesto por el tema de si pierde calidad, pero voy a ver que tal.
Responder Con Cita
  #6  
Antiguo 03-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

En realidad no es tanta "historia". Yo tengo un programa que usa la referida librería. El programa admite como entrada una imagen de cualquiera de los formatos de entradaq soportados, puede rotar la imagen, y, a continuación, guardarla en cualquiera de los formatos de salida soportados. Todo eso lo hace en "cero coma", como suele decirse. Vamos, que, no es tanta historia.

Y, eso suponiendo que no puedas rotar una imagen TIFF, directamente, y volverla a guardar. ¿Esto sí que lo probaste, no?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 03-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Acabo de comprobar que la librería soporta el formato TIFF y puede rotar imágenes en este formato directamente. Si descargas la librería verás que en la carpeta "demos" viene un programa de nombre "VampConvert.exe". Puedes usar el programa de esta forma:

Código:
VampConvert.exe -infile=C:\apple.tif -outfile=C:\appler.tif -rotate=90
El programa es una demostración de la librería en cuestión, quiere decirse, que lo que el programa hace puede hacerlo la librería.

Podrías utilizar un código similar a este, y, ojo que lo he adaptado "al vuelo" y sin probarlo del programa en que yo lo estoy usando, lo mismo se me escapa algo, pero, básicamente, esto es:

Código Delphi [-]
uses
  Imaging, ImagingTypes, ImagingUtility;

{...}

function RotarImagen(imagenEntrada, imagenSalida, angulo: string): boolean;
var
  img: TImageData;
  aAngulo: integer;
begin
  result := false;
  InitImage(img);
  try
    aAngulo := StrToIntDef(angulo, 0);
    if not Imaging.LoadImageFromFile(imagenEntrada,img) then
      raise Exception.Create(ImagingUtility.GetExceptObject.Message);
    if (aAngulo mod 90) = 0 then
      result := Imaging.RotateImage(img,aAngulo)
    else
      raise Exception.Create(rsErrorImgAnguloIncorrecto);
    if not Imaging.SaveImageToFile(imagenSalida,img) then
      raise Exception.Create(ImagingUtility.GetExceptObject.Message);
  finally
    FreeImage(img);
  end;
end;

Como verás, el formato de la imagen de entrada y el formato de la imagen de salida se deducen de su extensión. En el programa que menciono, tengo algún procedimiento que se encarga de comprobar que, efectivamente, tanto el formato de la imagen de entrada, como el de la imagen de salida, están soportados por la librería Imaging.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-12-2007 a las 20:14:57.
Responder Con Cita
  #8  
Antiguo 04-12-2007
mbelda mbelda is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 13
Poder: 0
mbelda Va por buen camino
Lo de vanconvert.exe ya lo probe y no se porque me dijo "tipo de archivo no soportado", por eso lo había descartado, voy a probar lo que me propones, supongo que ira perfecto, muchas gracias, eres un máquina, si quieres venirte para el sur, no dudes en decirlo, estaria encantado de trabajar contigo, jeje. Estamos buscando programador en delphi + sqlserver.
Responder Con Cita
  #9  
Antiguo 04-12-2007
mbelda mbelda is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 13
Poder: 0
mbelda Va por buen camino
Unhappy No entiendo, debe ser por la versión

Me sigue sin funcionar el programa vampconvert, dice que tif no esta en los supported file formats <IMPUT>: jpg, bmp... pero tif no aparece.

Yo me descarge las librerias de sourceforge.net, la ultima versión, me puedes enviar por mail tu vampconvert.exe a ver si con el tuyo funciona y es cuestión de version? Gracias.
Responder Con Cita
  #10  
Antiguo 04-12-2007
mbelda mbelda is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 13
Poder: 0
mbelda Va por buen camino
Post Version

Es la 0240 de 28-06-2007
Responder Con Cita
  #11  
Antiguo 04-12-2007
mbelda mbelda is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 13
Poder: 0
mbelda Va por buen camino
Jpg Ok

RotarImagen, funciona perfectamente, el código sin ningún error, corto, claro y efectivo, pero el tif no está dentro de los formatos reconocidos, he hecho la prueba con un jpg y funciona bien, pero el tif nada. He revisado las carpetas y dentro de Imaging está \Extras\Extensions\LibTiff, que supongo que hay es donde estarán las funciones para pasar de tif a jpg y de jpg a tif otra vez.
Responder Con Cita
  #12  
Antiguo 04-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues te aseguro que yo probé ayer con una imagen "TIF". Otra cosa es que haya "imágenes TIF diferentes"... de hecho yo no encontré ninguna en mi disco duro, así que tuve que buscar un poco por ahí, pero, al cabo conseguí una imagen "TIF" (o que tenía extensión TIF, o que "ponía" que era TIF) y pude llevar a cabo la rotación sin problemas.

No sé...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 03-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Utiliza el componente TRotateImage (o algo así), es fácil de usar u gratuito
Saludos
salvica
Responder Con Cita
  #14  
Antiguo 03-01-2008
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Mira esto

Hace poco yo estaba con este mismo problema, aunque yo lo que tenía que transformar era un jpg, pero creo que te servirá igual, chequealo para ver si te funciona. Aquí te dejo el código, creo que lo saqué de la sección de trucos o de algún hilo, lo que tengo claro es que lo obtuve, como tantas veces, en clubdelphi, pagina a la que le estoy muy agradecido, sobre todo a sus foreros.

Código Delphi [-]
procedure TFrmGesArt.Convertir(Origen:string);//, Destino: string);
var
  Imagen: TPicture;
  Bitmap: TBitmap;
begin
  Imagen:= TPicture.Create;
  try
    Imagen.LoadFromFile(Origen);
    if not (Imagen.Graphic is TBitmap) then
    begin
      Bitmap:= TBitmap.Create;
      try
        Bitmap.Width:= Imagen.Width;
        Bitmap.Height:= Imagen.Height;
        Bitmap.Canvas.Draw(0,0,Imagen.Graphic);
        image4.Picture.Bitmap:=bitmap;
        //Bitmap.SaveToFile(Destino);
      finally
        Bitmap.Free;
      end;
    end else image4.picture.bitmap:=bitmap;//Imagen.SaveToFile(destino);
  finally
    Imagen.Free;
  end;
end;

Espero que te sirva de algo
Responder Con Cita
  #15  
Antiguo 27-05-2008
guilloking guilloking is offline
Registrado
 
Registrado: may 2008
Posts: 4
Poder: 0
guilloking Va por buen camino
Hola, ustedes sabrian como rotar un shape, no encuentro la manera.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Rotar Imagen Rako Gráficos 5 23-11-2007 12:51:14
Rotar imagen jpg ElDioni Gráficos 6 09-11-2007 11:05:50
rotar una imagen sin parar jarscuba Gráficos 4 14-03-2005 09:51:31
Rotar una imagen zuriel_zrf Gráficos 2 29-12-2003 19:37:53
Como rotar x grados un bitmap ( o grafico en general ) manoley23 Gráficos 2 28-07-2003 17:23:38


La franja horaria es GMT +2. Ahora son las 10:50:08.


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