¿Cómo escalar una imagen en Velneo V7?

Este post está escrito por alguien relevante dentro de la comunidad Velneo.  No tiene por qué coincidir con mis puntos de vista o mis opiniones. Si quieres colaborar como autor invitado no dudes en ponerte en contacto conmigo.

Escalar imagen en Velneo V7Tras muchos intentos y cabezazos una vez mas he conseguido mi propósito que era poder escalar una imagen en Velneo V7, en tiempo real para no cargar en la BD una foto de 20MB y quien sabe si nuestros amigos usuarios serian capaces de seleccionar alguna de 80MB.

Alguien soez e inteligente diría que existen métodos de control, ¡Bingo eres un crack! pero acabas de pesarle la pelota al usuario de tu aplicación. Muy posiblemente esté ajeno a algo llamado Photoshop o Gimp seré algo mas atrevido, alguno seguro que no sabe ni lo que es PAINT.

Nuestros usuarios deberían usar alguna de estas aplicaciones y redimensionar la imagen, volver a nuestra aplicación y volver a cargar. Si con nuestro fantástico sistema de control de peso le hacemos a nuestro fantástico usuario redimensionar 3 veces la imagen por 20kb te puedes considerar un experto en usabilidad y tener por seguro un éxito tremendo con tu aplicación.

Se me olvidaba, esa funcionalidad no la usará nadie y lo mejor que tu publico te puede decir es:

 

«Valiente mierda nos has puesto»

¿Qué necesitamos para escalar una imagen en Velneo V7?

Tener claro si vamos a guardar las imágenes en BD o en una ruta del servidor, ambos casos son discutibles ya que cada uno presenta sus pros y sus contras pero ambos métodos necesitan un denominador común: «SU PESO»

En un formulario colocamos un botón y un objeto dibujo. Creamos un manejador de eventos y le pegamos el siguiente código

importClass( «VImage» );

// Lanzamos el cuadro de dialogo «Abrir fichero»
var path = theMainWindow.fileDialogGetOpenFileName( «Abrir imagen», «», «*.jpg;*.bmp;*.png»);
//var Ruta_salida = «c:/planos/foto1.png»

if ( path.length > 0 )
{

// Creamos una imagen y cargamos el fichero
var img = new VImage();
var img2 = new VImage();

if ( img.load(path) )
{

//Escalamos la imagen al mismo ratio pero con el alto que le pasamos

img2 =img.scaled(ancho, alto,0, 1);

// Cogemos el control FOTO y le pasamos la imagen
var edFoto = theRoot.dataView().control( «IMAGEN» );

edFoto.setImage( img2 );
}
else
alert(«No se ha podido cargar la imagen: » + path);
}

Ahora puedes hacer lo que quieras, guardarlo en la BD o ponerlo en un directorio.

Espero que lo disfrutéis y que sea un dolor de cabeza menos.

Si tienes algún truco o rutina que quieras compartir… ¡¡No lo dudes!! Ponte en contacto conmigo y publícala en este blog

Rodolfo Villanueva
veldevelop@gmail.com

Rodolfo Villanueva es Técnico de Sistemas, Programador en Delphi, Lazarus python, Velneo V7 y creador del chat #velneo_v7-es en freenode. Enamorado de la tecnología, devoto del código fuente y entusiasta de las cosas bien echas.

2 Comments
  • vArquitecto
    Posted at 18:14h, 09 julio Responder

    Tienes una cosa mal. No necesitas crear img2 previamente con new VImage(). La funcion scaled ya construye internamente una imagen nueva y la devuelve. Programa corregido:

    importClass( “VImage” );

    // Lanzamos el cuadro de dialogo “Abrir fichero”
    var path = theMainWindow.fileDialogGetOpenFileName( “Abrir imagen”, “”, “*.jpg;*.bmp;*.png”);
    //var Ruta_salida = “c:/planos/foto1.png”

    if ( path.length > 0 )
    {
    // Creamos una imagen y cargamos el fichero
    var img = new VImage();

    if ( img.load(path) )
    {
    //Escalamos la imagen al mismo ratio pero con el alto que le pasamos
    var img2 =img.scaled(ancho, alto,0, 1);

    // Cogemos el control FOTO y le pasamos la imagen
    var edFoto = theRoot.dataView().control( “IMAGEN” );

    edFoto.setImage( img2 );
    }
    else
    alert(“No se ha podido cargar la imagen: ” + path);
    }

  • veldevelop
    Posted at 18:53h, 09 julio Responder

    Muchas gracias por contestar jefe, demasiado bien me ha salido ya que no domino javascript y como es normal desconocía ese detalle. No obstante aprovecho para decir que somos muchos los que tropezamos con javascript y no terminamos de entender su funcionamiento con Velneo y no estaría nada mal algunos guiaburros y ejemplos similares.

Post A Comment

Información básica sobre Protección de Datos: Responsable: Francisco José Vila Martín. Finalidad: Gestionar y moderar los comentarios. Legitimación: Tu consentimiento. Destinatarios: Tus datos se alojarán en los servidores de Web Empresa S.L. (UE). Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos, así como otros derechos, como se explica en la información adicional. Información adicional: Puedes consultar la información adicional y detallada sobre protección de datos personales en mi Política de Privacidad.

Pin It on Pinterest