GeneXus - Insertar imágen en BD

 
Vista:

Insertar imágen en BD

Publicado por Ariel (8 intervenciones) el 21/02/2008 18:35:13
Hola comunidad, estuve leyendo las notas publicadas con respecto a manejo de imágenes pero ningún ejemplo me funcionó. Me percaté que era un tema de variables. Les explico el problema:

Cuando utilizamos el comando "gxSelFile", éste nos devuelve un cadena en forma de char (&path por ejemplo). Esta cadena nos sirve para cargar la imágen por medio de la función "loadBitmap", pero no para insertarla en la base de datos, donde tenemos un atributo de tipo BLOB, no se puede insertar de ninguna de las siguientes formas (por error de tipos):
imagen = &path
imagen = loadbitmap(&path)
(siendo "imagen" el atributo de la transacción)
Creo que el problema está en convertir el archivo de la cadena a BLOB antes de la asignación a la base de datos o atributo, si bien existe la posibilidad de crear una variable de tipo BLOB, no conozco como hacer una conversión a BLOB. Si alguién tiene alguna idea de como realizar ese paso o alguna solución le estaré agradecido que lo comente.
Saludos cordiales,
Ariel.-
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Insertar imágen en BD

Publicado por Patricio Ojeda V (475 intervenciones) el 23/02/2008 20:43:58
Ariel,

Lo que tienes qie hacer es con el GXSelFile seleccionar la Foto... y luego a traves de un Procedimiento puedes asignar la foto al registro que corresponda.

Obviamente para poder asignar la foto al registro el Procedimiento lo debes llamar en el evento After Trn.. o tambien en las Rules on After Complete.

Saludos

Patricio Ojeda V
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Ariel (8 intervenciones) el 24/02/2008 18:15:39
Gracias Patricio, lo pude hacer y salió perfecto. Igualmente mi duda se centraba en pasar la cadena que devuelve el GXSelFile a BLOB, y esto se hace directamente ya que el registro BLOB trabaja como un char; yo trataba de asignarle el bitmap al BLOB directamente asi:
BLOB = loadBitmap(&path)
y obviamente no iba a funcionar, se pasa directamente:
BLOB = &path

Gracias por tu tiempo!
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Ariel (8 intervenciones) el 24/02/2008 18:45:07
Siguiendo con los problemas de imágenes, quisiera saber alguna técnica para capturar el tamaño de un bitmap, ya que los tengo de diferentes proporciones y al momento de cargarlos quisiera especificar el tamaño del control bitmap para poder mostrarlos en proporcion al original.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Insertar imágen en BD

Publicado por Patricio Ojeda V (475 intervenciones) el 25/02/2008 13:19:50
Ariel,

¿Lo que quieres hacer es determinar el tamaño de la imagen para mostrarlo un un Wkp personalizado al tamaño de la misma?

saludos

Patricio Ojeda V
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Ariel (8 intervenciones) el 25/02/2008 15:06:43
Hola Patricio,
No es eso lo que quería hacer, aunque si es válido que quiera determinar el tamaño de cada imágen que traigo de la DB.
Si inserto imágenes de diferentes proporciones algunas me quedarían estiradas en vertical u horizontal, según el tamaño predefinido del objeto Bitmap. La idea sería hacer una función que me devuelva el tamaño de la imágen y achicarla proporcionalmente para así redefinir el tamaño del objeto Bitmap y luego cargarla en éste.
El objeto Bitmap tiene una función que se puede configurar para que al cargar una imágen, ésta conserve el tamaño original, pero esto sólo sirve para manejo de datos estáticos; si quiero variar las imágenes a cargar en un mismo Bitmap, estas quedan deformadas ya que se cargan por código.
Espero me hayas entendido, y desde ya gracias.

Ariel.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Insertar imágen en BD

Publicado por Patricio Ojeda V (475 intervenciones) el 25/02/2008 22:45:47
Ariel,

Lo que necesitas es algo que por lo menos yo no se hacer, ni tampoco conozco a alguien que lo haya hecho.

Algunos van modificando el ancho y alto de la variable Bitmap donde muestras la imagen... pero muchas veces dependiendo de la forma y tamaño de la foto tampoco queda algo optimo o presentable.

Lo que yo hago para mostrar las fotos es simplemente mostrarlas en el "Visor de Windows". Con ello consigo que la imgen, independiente del tamaño que tenga, se muestre como corresponde.

Saludos

Patricio Ojeda V
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Ariel (8 intervenciones) el 26/02/2008 11:39:46
Gracias Patricio, es muy buena la idea de abrir la imagen con el visor de imágenes, lo que no se es el comando que habría que utilizar, sería algo así?
shell(visor.exe, "ruta_del_archivo.jpg")
Y es una pregunta que escapa a Genxeus, pero no lo puedo encontrar al ejecutable del visor. Si lo tenés hecho me pasas la línea por favor?
Gracias por la atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Mauro (2 intervenciones) el 10/04/2015 05:41:31
Hola A todos, soy nuevo en esto. Estoy probando Genexus Evo3 y lo que quiero hacer es lo siguiente:

Tengo una transacción de personas con un atributo foto de tipo image. También tengo una foto subida
a la KB con el nombre DefaultPicture.

Lo que quiero hacer es que si cuando se da de alta una persona y no se le carga una foto, se inserte
esa (DefaultPicture) por defecto.

Para hacer pruebas estoy utilizando esta regla PersonaFoto.FromImage(DefaultPicture);
pero me da error cuando quiero generar la transacción

Este es el error:
callmake.bat "D:\Genexus\Desa\PersonasApp\JavaModel\web\GXJMake.exe" "C:\Program Files\Java\jdk1.6.0_22\bin\javac.exe" developermenu com\personasapp\ options: -O
GeneXus Java Make v1.0
com\personasapp\persona_impl.java:3020: cannot find symbol
symbol : class edit
location: class com.personasapp.persona_impl
private edit DefaultPicture ;
^
com\personasapp\persona_impl.java:2676: cannot find symbol
symbol : class edit
location: class com.personasapp.persona_impl
DefaultPicture = new edit();
^
2 errors

failed ( error code=1)
Build failed.
DeveloperMenu Compilation for Default (Java Web) Failed
Build With This Only Failed

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Rigoberto (3 intervenciones) el 26/06/2015 19:31:21
Intenta colocar la jdk 1.7 y pruebas nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar imágen en BD

Publicado por Mauro (2 intervenciones) el 26/06/2015 20:29:31
Muchas gracias pero era un problema de done realizaba la asignación de la misma y en que parte del web panel la asignaba.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar