Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-07-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
Question consulta de imagen

Buena tarde, Estoy haciendo una captura de Registro en la cual agrego una foto.bmp y grabo la dirección de dicha foto, pero cuando quiero hacer una consulta ya sea por un navegador o un edit, no logro visualizar la foto, la pregunta es como puedo lograrlo.

para subir la foto uso el siguiente código
Código:
if (openPictureDialog1.Execute) then begin
          image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
          edit1.Text := OpenPictureDialog1.FileName;
y consulta los registro en un edit con este codigo
Código:
if Edit2.Text <> '' then
                 Tbl_Fotos.Locate('Codigo_Imagen', Edit2.Text, [])
              else
                 Abort;
y grabo la dirección de la foto así
Código:
if Tbl_Fotos.State in [dsedit, dsinsert] then
         Tbl_FotosImagen.Value := Edit1.Text;
         Tbl_Fotos.Post;
puedo decir que es buscando esta consulta en el foro pero no la encuentro, mil gracias
Responder Con Cita
  #2  
Antiguo 31-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Para visualizar la foto (en formato bmp) deberías utilizar un TDBImage conectado a tu BD a través de un TDataSource.
Salu2
Responder Con Cita
  #3  
Antiguo 01-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola edwin.simon

Como te menciona randenf la presentación de una imágen tipo bmp, si está almacenada físicamente en una tabla, es muy simple mediante un TDBImage .

Pero si deseas usar la ruta a la imágen, te pongo un ejemplo genérico de como podes implementarlo:
Código Delphi [-]
...
implementation

var
  Cod: Integer = 1;

// Mostrar al desplazarse
procedure TForm1.Tbl_FotosAfterScroll(DataSet: TDataSet);
begin
  with Tbl_Fotos.FieldByName('Imagen') do
    if not IsNull then
      Image1.Picture.LoadFromFile(AsString);
end;

// Agregar imágen
procedure TForm1.btnAddPictureClick(Sender: TObject);
begin
  with Tbl_Fotos do
  begin
    if OpenDialog1.Execute then
    begin
      Append;
      FieldByName('Codigo_Imagen').AsString:= Format('%.4d', [Cod]);
      FieldByName('Imagen').AsString:= OpenDialog1.FileName;
      Post;
      Inc(Cod);
    end;
  end;
end;

// Buscar registro x código - mostrar imágen
procedure TForm1.btnFindClick(Sender: TObject);
begin
  if Tbl_Fotos.Locate('Codigo_Imagen',Edit1.Text,[]) then
    Image1.Picture.LoadFromFile(Tbl_Fotos.FieldByName('Imagen').AsString);
end;
La conveniencia de almacenar físicamente la imágen o la ruta a la misma es un tema muy controversial.
Como muestra, se trata en este hilo: consejo para mostrar y guardar imagenes. Buscando en profundidad vas a encontrar mas material para que puedas decidir la mejor opción para tu caso.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 01-08-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
mucha gracias por la información rafenf y ecfisa
ECFISA, lei el debate que hay con relación a donde guardar la imagen super interesante, pudo decirte que en la actualidad almaceno la foto en la base de dato usando un DBImage, el problema es que esta muy pesada porque tengo 4300 registro y cada registro tiene una foto si pudiera hacer que se moviera mas rápida fuera un éxito.

si hay otra forma de mejorar el movimiento de la BD, para mi fuera lo mejor.
Responder Con Cita
  #5  
Antiguo 02-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola edwin.simon
Cita:
Empezado por edwin.simon Ver Mensaje
... pudo decirte que en la actualidad almaceno la foto en la base de dato usando un DBImage, el problema es que esta muy pesada porque tengo 4300 registro y cada registro tiene una foto si pudiera hacer que se moviera mas rápida fuera un éxito.

si hay otra forma de mejorar el movimiento de la BD, para mi fuera lo mejor.
La solución obvia es usar otro formato que mapa de bits para almacenar las imágenes. Para denotar la diferencia, una misma imágen de 1920x1200 píxeles ocupa:
Código:
Formato BMP (24 bits) = 6.912.054 bytes
Formato JPG           =   495.616 bytes
Pero, si almacenas imágenes JPG no podrás usar un TDBImage para mostrarlas, aunque podes usar un TImage en su lugar.

Un ejemplo básico:
Código Delphi [-]
implementation

uses Jpeg;
...
var
  Cont: Integer = 1;

// TImage a TBlobField
procedure ImageToField(aImage: TImage; aField: TField);
begin
  if aImage.Picture.Graphic is TJPEGImage then
  begin
    aField.DataSet.Edit;
    aField.Assign(aImage.Picture.Graphic);
  end;
end;

// TBlobField a TImage
procedure FieldToImage(aField: TField; aImage: TImage);
var
  J: TJPEGImage;
begin
  aImage.Picture:= nil;
  if (aField is TBlobField) then
    if not aField.IsNull then
    begin
      J:= TJPEGImage.Create;
      try
        J.Assign(aField);
        aImage.Picture.Assign(J);
      finally
        J.Free;
      end;
    end;
end;

// Agregar una imágen
procedure TForm1.btnAddImageClick(Sender: TObject);
begin
  with OpenDialog1 do
  begin
    if Execute then
    begin
      Image1.Picture:= nil;
      Image1.Picture.LoadFromFile(FileName);
      IBDataSet1.Insert;
      IBDataSet1.FieldByName('ID').AsInteger:= Cont;
      ...
      ImageToField(Image1,IBDataSet1.FieldByName('IMAGEN'));
      IBDataSet1.Post;
      Inc(Cont);
    end;
  end;
end;

// Mostrar imágen al desplazarse
procedure TForm1.IBDataSet1AfterScroll(DataSet: TDataSet);
begin
  FieldToImage(IBDataSet1.FieldByName('BLOB1'),Image1);
end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 03-08-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Otra alternativa a lo que propone ecfisa.
Existe un componente gratuito que permite visualizar imágenes Jpeg guardadas en la base datos, sin añadir código.
EDBimage de Sebastián Mayora. La versión para Delphi 7 se encuentra disponible en la web de Embarcadero.
Trae el código fuente que permite adaptarlo para otras versiones de Delphi. Yo la utilizo con Delphi 2007 y XE3 y funciona sin problemas.

Saludos
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
Zoom de una imagen en otra imagen Juliajuli Gráficos 1 02-09-2013 18:17:35
Consulta Imagen DrawGrid bostero_eep Varios 3 24-06-2012 19:19:34
Comparar imagen en pantalla con otra imagen gorgori Gráficos 4 24-12-2010 13:17:22
Como puedo convertir una imagen a una imagen semitransparente? antonio302050 Gráficos 0 27-03-2010 17:01:48
Consulta SQL a un regisrto que contine una Imagen testosi SQL 2 06-10-2008 13:20:01


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


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