Ir al contenido


Foto

Cargar imágenes de tipo variant en un TImage


  • Por favor identifícate para responder
26 respuestas en este tema

#21 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 17 septiembre 2010 - 08:58

Ah vaya, seguire buscando documentacion al respecto ya que es muy escaso el asunto, es posible que sea una imagen del tipo 1:N?.

Saludos.
  • 0

#22 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.242 mensajes
  • LocationMéxico

Escrito 17 septiembre 2010 - 09:00

Ah vaya, seguire buscando documentacion al respecto ya que es muy escaso el asunto, es posible que sea una imagen del tipo 1:N?.

Saludos.


Una pregunta, con que función, utileria, programa, etc ingresa a la base de datos el Template, he hecho pruebas de decodificar el supuesto base64 y despues meterlo como un Stream a una imagen y no muestra nada, aunque tampoco me da errores.

Salud OS
  • 0

#23 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 17 septiembre 2010 - 09:05

Una pregunta, con que función, utileria, programa, etc ingresa a la base de datos el Template, he hecho pruebas de decodificar el supuesto base64 y despues meterlo como un Stream a una imagen y no muestra nada, aunque tampoco me da errores.

Salud OS


Pues la huella se descarga directamente desde el lector via un software proporcionado por el proveedor.
  • 0

#24 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 13 octubre 2010 - 10:13

Bueno, sigo con este asunto, al parecer los datos que se suponía que son imágenes de huellas digitales no lo son :p, viendo y viendo el manual he percibido que existe la posibilidad de que se trata de una archivo .tpl que se guarda directamente a la tabla, y sigo buscando la manera de cómo leer esos datos para extraer su contenido y trabajar con ella, ya que en el manual no habla sobre ello, porque los ejemplos y definiciones lo guardan como archivo físico "C:\huella.tpl", alguna idea de cómo convertirlo a su estado normal?, o sea, variant a archivo .tpl.

Saludos.
  • 0

#25 gustavodiego

gustavodiego

    Newbie

  • Miembros
  • Pip
  • 2 mensajes

Escrito 08 julio 2012 - 07:04

Hola amigos tengo un lectore de huellas digital persona uareu4500 y consegui un ocx biokey pero no se por dende puedo empezar a grabar a mi base de datos y como realizar las comparaciones.
Nota: Trabajo con firebird

Gracias
  • 0

#26 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 09 julio 2012 - 03:26

Creo que os estais liando un poco... parece, por lo que leo, que esa imagen de la huella no está accesible como BMP ni nada similar, lo cual es lógico, si puedes cambiar una huella por otra modificando ese texto estaríamos perdidos!

En su lugar, el software del lector instala un servidor OLE que es capaz de mostrar la imagen sobre un TOLeContainer de Delphi, no sobre un TImage.

Creo que en lugar de tener un TImage deberías poner un TOleContainer, luego, inicializar el OleContainer.OLEObjetc, y ese OLEObject creo que es el que sabrá hacer un LoadFromStream del texto este en Base64/Hex que mencionais, y supongo que sin necesidad de descomprimirselo en absoluto... pero todo esto son suposiciones, claro.

Te copio trozos de código que uso para visualizar TOLEContainers, es código antiguo, no lo uso hace años, pero te allanará el camino.

Así lo creo sobre un form blanco por código:



delphi
  1.   Ole:= TOleContainer.create(TmpForm);
  2.   Ole.Color:= clWhite;
  3.   Ole.Parent:= TmpForm; //El panel del form donde quieres poner la imagen
  4.   Ole.SizeMode:= smStretch;
  5.   Ole.AutoActivate:= aaManual;
  6.   Ole.AllowInPlace:= false;
  7.   Ole.Align:= alClient;
  8.   Ole.AutoVerbMenu:= false;
  9.   Ole.BorderStyle:= bsNone;



Con este código de tu post, se lee la huella dentro de un OLEVariant...



delphi
  1. if not IsEmpty then
  2.   with TBlobStream(CreateBlobStream(FieldByName('Template'), bmRead)) do begin
  3.     AFPData := VarArrayCreate([0, Size + 1], varByte);
  4.     pData := VarArrayLock(AFPData);
  5.     try
  6.       Read(pData^, Size);
  7.     finally
  8.       VarArrayUnlock(AFPData);
  9.     end;
  10.   Free;
  11. end;



Ahora te tocaría pasarselo (el AFPData que es un OLEVariant) al objeto OLE interno dentro del TOLECOntainer, no te se decir el como, haz pruebas (quizas si lo guardas a stream/fichero y luego haces un TOleContainer.LoadFromStream o algo así... ), y finalmente, si quieres obtener un BMP, tendrias que "hacerle una foto" al olecontainer!

Yo lo hago así:



delphi
  1.   if (Foto=Nil) then Foto:= TPicture.create;
  2.   //Muestro el form...
  3.   TmpForm.Visible:= true;
  4.   TmpForm.Show;
  5.   //Refresco el contenido del Ole...
  6.   S:= TMemoryStream.create;
  7.   Ole.SaveToStream(S);
  8.   S.Position:= 0;
  9.   Ole.LoadFromStream(S);
  10.   S.free;
  11.   Application.ProcessMessages;
  12.   while  (Ole.State <> osLoaded) do
  13.     Application.ProcessMessages;
  14.   //Cambio tamaño de la Foto...
  15.   Foto.BitMap.Width:= Ole.Width;
  16.   Foto.BitMap.Height:= Ole.Height;
  17.   //Defino rectangulos a copiar (canvas)...
  18.   R1.left:= 0;
  19.   R1.top:= 0;
  20.   R1.right:= Foto.Width;
  21.   R1.bottom:= Foto.Height;
  22.   R2.left:= Ole.left+1;
  23.   R2.top:= Ole.top+1;
  24.   R2.right:= Ole.left+Ole.Width-2;
  25.   R2.bottom:= Ole.Top+Ole.Height-2;
  26.   Foto.BitMap.Canvas.CopyRect(R1,TmpForm.Canvas,R2);
  27.   TmpForm.Visible:= false;
  28.   Ole.modified:= false;



Creo que todo va de controlar estos olecontainers, no imagenes, pero de nuevo, es solo mi impresion!
  • 0

#27 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 09 julio 2012 - 07:22

Muchas gracias Sergio!!
  • 0