Foros Club Delphi

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

erasmorc 22-10-2005 17:01:13

Como editar imagen
 
Buenos dias,

Tengo el siguiente problema, necesito a una imagen cualquiera que este hecha en un formato cualquiera poder cargala y poder visualizarla en un formulario de delphi y ahi poder hacerle una modificacion que podria ser ponerle una raya, un punto, lo que sea y poder guardar esta imagen. Agradeceria mucho cualquier ayuda.

Slds.
Neo

dec 22-10-2005 21:15:59

Hola,

Pienso que deberías pelearte con el "TCanvas" del "TImage" en que quieras dibujar. En este Foro encontrarás no poca información: aquí puedes ver los resultados de una única búsqueda en los mismos, habrá más, seguramente. Sin embargo, tu mensaje deja algunas cosas no demasiado claras, y, que me hacen dudar para seguir adelante planteándote alguna que otra solución por mi parte. Verás.


Cita:

Empezado por erasmorc
(...) necesito a una imagen cualquiera que este hecha en un formato cualquiera poder cargala y poder visualizarla en un formulario de delphi (...)

Para mí tengo que existen no pocos formatos de archivos de imagen. Delphi soporta unos cuantos (bastantes) "de serie" y pueden añadirse otros a la lista mediante componentes de terceros, pero, dicho así "cualquiera que sea su formato", suena demasiado general, en mi opinión: probablemente no pueda darse una regla general en este, como en otros casos ocurre.


Cita:

Empezado por erasmorc
(...) poder hacerle una modificacion que podria ser ponerle una raya, un punto, lo que sea (...)

Con ese "lo que sea" me quedo igual que antes: una cosa es dibujar una línea/raya, un punto, un círculo, un polígono, y otra muy distinta ha de ser dibujar "lo que sea". En fin. Espero que en los Foros encuentres información, que puedas concretar un poco más, si te parece oportuno, o que alguien pueda, en todo caso, ofrecerte alguna que otra idea.

erasmorc 24-10-2005 14:13:18

Buenos dias,


Al parecer no me explique bien, tratare de hacerlo mejor, lo que necesito es poder editar una imagen imaginate que tengo una imagen que siempre sera la misma osea como una plantilla y dicha imagen puede estar en el formato jpg entonces yo quisiera con la imagen ya cargada en un timage poder editarla y hacerle cambios pero los cambios que necesito hacerle son simplemente rayas o puntos cualquiera de los dos si solo se puede hacer uno de ellos pues perfecto con un solo tipo de marcas seria suficiente, imaginate cuando rentas un vehiculos en un rent car, quieres llenar el formulario de salida del vehiculo en el programa y entonces cargas una imagen lateral del vehiculo si el dano es en esa area que esta y quieres marcar todos los puntos en los cuales el vehiculo tiene marcas de abolladuras o rayones en la pintura, entonces poder guardar esa imagen con las modificaciones osea los puntos o rayones que le agregaste. Esa es la idea de lo que quiero hacer.

Slds,
Neo

Lepe 24-10-2005 14:59:08

Usa LoadFromFile del Timage para cargar la imagen desde disco.

Usa los métodos apropiados del Timage.Canvas para dibujar lineas, recuadros, elipses, etc. Despues usa el método SaveToFile para guardarlo.

En tu disco duro, en la carpeta delphi\demos\ debes tener un explorador de Jpegs con código fuente, desde ahí puedes ver como trabajar con ellos.

saludos

dec 24-10-2005 15:17:39

1 Archivos Adjunto(s)
Hola,

Se trata, diría, de lo que dice Lepe y yo apunté más arriba:


Cita:

Empezado por yo mismo
Pienso que deberías pelearte con el "TCanvas" del "TImage" en que quieras dibujar. En este Foro encontrarás no poca información: aquí puedes ver los resultados de una única búsqueda en los mismos, habrá más, seguramente.

He preparado un sencillo ejemplo (que adjunto), a ver qué te parece: conste que es más que sencillo simple, para que te hagas idea, acaso. ;)

erasmorc 24-10-2005 17:10:18

Buenos dias,


Al parecer no he podido explicarme bien, vamos de nuevo. Todo eso que ustedes me plantean ya lo tengo hecho, a este nivel ya puedo agregar danos preestablecidos al coche osea tengo todo el coche por piezas en un form, el usuario puede seleccionar que parte del coche tiene problemas, todo esto en Timage entonces tengo determinado los diferentes tipos de dano que puede tener el coche abolladuras, rayaduras, golpes, etc bien a cada uno de estos danos le tengo asignado un boton que enciende y apaga ya sea el caso si tiene la el dano o no pero lo que quiero lograr es que no sean ediciones preestablecidas sino que yo pueda abrir la imagen en edicion y colocar en toda su superficie cualquier anotacion osea una raya, un punto, una x, etc y que esto lo pueda asociar al registro.

Si te fijas en el ejemplo que me enviaste si dices que tienes una averia en la parte trasera te marca toda la parte trasera, pero no tienes averia en toda la parte trasera sino solo en la esquina izquiera, entonces yo quisiera poder posicionarme en esa esquina y colocar una raya, un punto, un led rojo, un circulo, lo que sea que indique que es en esa area que tengo el dano

Slds,
Neo

roman 24-10-2005 18:46:17

Cita:

Empezado por erasmorc
que yo pueda abrir la imagen en edicion y colocar en toda su superficie cualquier anotacion osea una raya, un punto, una x, etc y que esto lo pueda asociar al registro.

Suponiendo que ya tienes cargada la imagen como bitmap (un jpg tendrás primero que convertirlo para poder dibujar) y que ya sabes como guardar los cambios, entonces me parece que lo único que te falta es como dibujar directamente sobre la imagen. Lo que te pongo a continuación te permite dibujar "a manos libres" o sea, cualquier cosa:

Código Delphi [-]
type
  TForm1 = class(TForm)
    Image1: TImage;

    procedure ImageMouseDown(...);
    procedure ImageMouseMove(...);
    procedure ImageMouseUp(...);
  private
    PenDown: Boolean; // indica si el botón del ratón está presionado
    StartPoint: TPoint; // punto inicial para dibujar una línea
  end;

implementation

procedure TForm1.Image1MouseDown(...);
begin
  PenDown := true;
  StartPoint := Point(X, Y);
end;

procedure TForm1.Image1MouseMove(...);
begin
  if PenDown then
  begin
    Image1.Canvas.Pen.Color := clRed;
    Image1.Canvas.Pen.Width := 2;

    Image1.Canvas.MoveTo(StartPoint.X, StartPoint.Y);
    Image1.Canvas.LineTo(X, Y);
    StartPoint := Point(X, Y);
  end;
end;

procedure TForm1.Image1MouseUp(...);
begin
  PenDown := false;
end;

Básicamente estás dibujando pequeños segmentos de recta; en conjunto hacen un dibujo a manos libres.

// Saludos


La franja horaria es GMT +2. Ahora son las 15:52:32.

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