[Vfp] Imagenes en variable

1,757 views
Skip to first unread message

Rita Cecila Restrepo De La Hoz

unread,
Apr 28, 2012, 6:25:01 PM4/28/12
to Comunidad de Visual Foxpro en Español
Hola Chicos

Una pregunta suelta y de respuesta rapida.

Sera que se puede guardar una imagen en una variable, me explico mejor

Busco la imagen con un getfile y la guardo en mi_variable para tener esa imagen a mis disposición.

se que lo puedo hacer asi

RUTA_NOMBREIMAGEN = GETFILE("jpg;bmp", "* SELECCIONE LA IMAGEN *", "Abrir", 0, "Imagenes")

Pero la imagen se guarda como imagen o como ruta?, si se guarda como imagen, entonces que función cumple la siguiente sentencia

IMAGENFILE = FILETOSTR(RUTA_NOMBREIMAGEN)

Mil Gracias por sus sugerencias.

Rita

PD: Ya tengo identificada a la tercera del grupo de asaltantes del super, mas tarde la publico. Jajajajaja

Luis Maria Guayan

unread,
Apr 28, 2012, 8:20:12 PM4/28/12
to publice...@googlegroups.com
lcFileName = GETPICT() te almacena en la variable la ruta y nombre del archivo de imagen.

lwImagen = STRTOFILE(lcFileName) te almacena en la variable el contenido de un archivo de imagen o un archivo binario y lo puedes almacenar en un campo tipo Blob o ponerlo en la propiedad PictureVal de un objeto Image


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Victor Espina

unread,
Apr 28, 2012, 8:37:40 PM4/28/12
to publice...@googlegroups.com
Eh, supongo que quisiste decir FILETOSTR() :)

Ahora, es importante tener en cuenta que el FILETOSTR() devuelve el contenido del archivo en el equivalente VFP de un Byte Array, lo cual puede causar problemas al momento de almacenar dicha informacion en una BD.  La causa de esto es que algunas BDs asumen una secuencia especifica de caracters como "end-of-file" (tipicamente CHR(0) + CHR(0)), con lo cual lo que venga despues queda fuera y no se graba.

Para evitar esto, es recomendable convertir el byte stream (lo que devuelve FILETOSTR) a un formato mas seguro para labores de almacenamiento, como lo es Base64. Te recomiendo que leas este articulo de codeWiki sobre este tema, incluyendo una clase para VFP que permite convertir un byte stream en Base64 y viceversa:



Saludos

Victor Espina


Saludos

Victor Espina

Rita Cecila Restrepo De La Hoz

unread,
Apr 28, 2012, 8:57:52 PM4/28/12
to publice...@googlegroups.com
Gracias chicos por sus sugerencias, le voy a explicar para que quiero guardar la imagen en una variable, 

Resulta que en balística se manejan unas cámaras con te dan una imagen de la trayectoria inversa del proyectil, la cámara su ubica donde se encontró el proyectil y se apunta en la diferentes direcciones, esta tiene un rastro láser, pues estos rastros láser se sobreponen sobre la foto y te muestra la composición, estas imágenes son tres para dar la triangulación (Valga la redundancia) del inicio de la bala, pues yo deseo llamar con getfile

foto_1 = a la foto t1
foto_2 = a la foto t2
foto_3 = a la foto t3

y yo poder llamar en cualquier momento que me visualice la variable foto_1 o 2  o 3 a criterio del investigador, sin tener que guardarlas en una tabla

Gracias.

Rita

Victor Espina

unread,
Apr 29, 2012, 9:08:21 AM4/29/12
to publice...@googlegroups.com
Asumiendo que esto lo estas haciendo en un formulario, en el evento Init deberias hacer:

THIS.addProperty("Foto1", GETPICT())
THIS.addProperty("Foto2",GETPICT())
THIS.addProperty("Foto3",GETPICT())

Luego para cambiar la imagen en pantalla haces:

THISFORM.Image1.Picture = THISFORM.Foto1  && o Foto2 o Foto3


Saludos

Victor Espina

Luis Maria Guayan

unread,
Apr 29, 2012, 11:22:31 AM4/29/12
to publice...@googlegroups.com
El 28 de abril de 2012 21:37, Victor Espina <vesp...@gmail.com> escribió:
Eh, supongo que quisiste decir FILETOSTR() :)

Gracias Victor, era así nomás FILETOSTR() ;-)

Luis Maria Guayan

unread,
Apr 29, 2012, 11:25:11 AM4/29/12
to publice...@googlegroups.com
Si son tablas nativas de VFP te conviene solo guardar la ruta y nombre y tener los archivos de imagenes guardados en alguna carpeta.

De todos modos si los quieres guardar en una tabla de VFP, a partir de VFP9 tienes los campos tipo Blob.

 
Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________



Reply all
Reply to author
Forward
0 new messages