Resolución campo imagen


([N1] VictorGT) #1

Hola a todos.

Estoy empezando a meterme con los campos objeto imagen, y la primera en la frente…

No se como obtener las dimensiones (ancho y alto, en pixels) de un campo objeto imagen.
Solo quiero eso, poder informar al usuario de las dimensiones REALES de la imagen almacenada.

Quiza en los formularios, se pueda obtener atacando el control que contiene la imagen, vale…
¿y en una rejilla? ¿y si quiero meter esos datos en campos de la tabla?

A lo mejor es preferible el enfoque inverso… Cuando cargo la imagen obtengo las dimensiones
y las guardo en campos auxiliares, pero este enfoque me obliga a usar siempre campos…

En principio me valdria con poder hacerlo en el caso del formulario: la imagen se muestra
en un control objeto imagen, y cerca de ella me gustaria poner algo como “640x480”.
Con este caso resuelto me apañaria (mostrar las dimensiones sin mostrar la foto no parece muy util).

Seguro que se puede con JS, claro… pero yo de JS menos de lo justo… lo mio con JS va lento

¿Podeis echarme una manita?

Gracias.


([N4] Infortic) #2

Hola Victor.

Así a bote pronto la forma más sencilla pasa por js, no sé si se podrá por código nativo.

El ejemplo que pones de mostrar la resolución en un formulario.

Crea una variable alfanumerica DIMENSIONES

Crea un manejador de evento javascript GET_DIMENSIONS con el código.

importClass( “VImage” );
theRoot.setVar(“DIMENSIONES”,theRegisterIn.fieldToImage(“CAMPO_IMAGEN”).width().toString() + " x " + theRegisterIn.fieldToImage(“CAMPO_IMAGEN”).height().toString() );

Pon un label con el contenido DIMENSIONES

Llamas al manejador de evento cuando veas tú, por ejemplo en el post inicializado del formulario y al cambiar la imagen.

Este código obtendría las dimensiones de la imagen desde el registro, otra variante sería obtenerlas desde el control imagen del formulario, tal vez sea más apropiado, para ello cambiarías el código js un poquito:

importClass( “VImage” );
theRoot.setVar(“DIMENSIONES”,theRoot.dataView().control(“IMG_CONTROL”).image().width().toString() + " x " + theRoot.dataView().control(“IMG_CONTROL”).image().height().toString() );


([N1] VictorGT) #3

Muchas gracias, info.

Justo lo que necesitaba para empezar…

Voy a pelearme un poco con JS…

Gracias otra vez.

Me edito:
¿Que sera mejor, cogerlo del campo o del control imagen? ni idea…
Lo unico que se ocurre es que el registro existe siempre, sin embargo
el control puede no existir…


([N1] VictorGT) #4

Bueno, gracias a INFO esto parece que esta resuelto. He creado un manejador de evento javascript en el formulario con el siguiente codigo:

//Capturamos el campo imagen
importClass(“VImage”);
theRoot.setVar(“V_DIMENSIONES”,theRoot.dataView().control(“ED_FOTO”).image().width().toString() + " x " +
theRoot.dataView().control(“ED_FOTO”).image().height().toString() );
//refrescamos, sino no se visualiza
theRoot.dataView().updateControls();

Este manejador lo disparo con la señal ON_SHOW del formulario. Por supuesto, V_DIMENSIONES es una variable local del formulario de tipo alfa. Solo nos queda mostrar V_DIMENSIONES en un texto estatico y listo.

Saludos.


([N4] Infortic) #5

Hola Victor, es posible que no se visualiza por hacerlo en OnShow, si lo haces en post inicializado posiblemente se vea el valor sin el updateControls

Un saludo.