======Ejemplo Adaptador de Imágenes====== ===== Introducción ===== El Adaptador de Imágenes te permite comparar dos imágenes. Hay que tener claro que las imágenes se comparan píxel a píxel. Por eso se ha creado una función que compara y que devuelva el porcentaje de la diferencia: * Si las imágenes son exactamente las mismas, píxel a píxel, la diferencia es 0, es decir son idénticas.. * Si hay alguna variación, es decir si se ha redimensionado la foto o se le ha modificado el color, el porcentaje estará comprendido entre 0 y 10. * Si las imágenes que se comparan son totalmente diferentes el porcentaje estará entre 11 y 20.\\ \\ ===== Parámetros de inicialización ===== El Adaptador de Imágenes tiene un único parámetro. Este parámetro es la ruta a la imagen con la que queremos trabajar: * **FilePath**: ruta completa donde está guardada la imagen.\\ \\ ===== Funciones predefinidas (PF)===== * **compareWithAnother**: compara la imagen del adaptador con otra imagen. Tiene dos parámetros de entrada y uno de salida: * **ImageToCompare**: ruta de la imagen a comparar. Es obligatorio. * **ResultPath**: ruta a la carpeta donde dejar el resultado. Es opcional. Si está vacío, la imagen resultante estará en la ruta TCD. La nueva imagen será una imagen con rectángulos rojos que marcan la diferencia entre imágenes. * **DifferencePercent**: parámetro de salida. Es un dato de tipo double y da información sobre el porcentaje de diferencia.\\ \\ Vamos a ver unos ejemplos:\\ \\ **Primer ejemplo: comparar imágenes iguales.**\\ \\ El Adaptador de Imagen, va a tener como único parámetro el Path a la imagen con la que quieres trabajar:\\ \\ {{ :es:comparar_imagenes_1.png?direct&300 |}}\\ \\ Si queremos comparar esta imagen con otra, tenemos que usar esta función y dentro ponerle la ruta de la otra imagen que queremos comparar:\\ \\ {{ :es:comparar_imagenes_2.png?direct&300 |}}\\ \\ Nota: donde se va a guardar la imagen resultante es opcional. Si le ponemos una ruta, se va a guardar en dicha ruta. Si no le ponemos nada se va a guardar dentro del directorio del TCD.\\ \\ Como son exactamente la misma imagen:\\ \\ {{ :es:comparar_imagenes_4.png?direct&300 |}}\\ \\ al ejecutar el caso de prueba:\\ \\ {{ :es:comparar_imagenes_3.png?direct&300 |}}\\ \\ El resultado va a decir que hay cero diferencias:\\ \\ {{ :es:comparar_imagenes_5.png?direct&300 |}}\\ \\ La variable de salida será un double, para que tenga decímales.\\ \\ **Segundo ejemplo: compara imágenes iguales de diferente tamaño.**\\ \\ Sigue siendo la imagen del árbol que hemos utilizado en el anterior ejemplo.\\ \\ {{ :es:comparar_tamano_0.png?direct&300 |}}\\ \\ El tamaño de esta foto tiene las siguientes dimensiones:\\ \\ {{ :es:comparar_tamano_4.png?direct&200 |}}\\ \\ Ahora la vamos a comparar contra:\\ \\ {{ :es:comparar_tamano_3.png?direct&300 |}}\\ \\ Son exactamente la misma imagen, pero esta segunda, si abrimos la pestaña de Detalles, tiene el siguiente tamaño:\\ \\ {{ :es:comparar_tamano_2.png?direct&200 |}}\\ \\ Ejecutamos el caso:\\ \\ {{ :es:comparar_tamano_1.png?direct&300 |}}\\ \\ Y a continuación nos dice que el porcentaje de la diferencia es:\\ \\ {{ :es:comparar_tamano_5.png?direct&300 |}}\\ \\ En este ejemplo ya si encuentra diferencias.\\ \\ Al ser diferentes las imágenes, nos va a marcar las diferencias que encuentra, enmarcándolas en un recuadro rojo:\\ \\ {{ :es:comparar_tamano_60.png?direct&300 |}}\\ \\ {{ :es:comparar_tamano_6.png?direct&300 |}}\\ \\ Nota: hasta 10, puede ser la misma imagen que ha sido redimensionada colocada en blanco y negro.\\ \\ **Tercer ejemplo: cambios en la imagen**.\\ \\ En este ejemplo se ha añadido unas bolas de color amarillo. Es la misma imagen y el mismo tamaño.\\ \\ {{ :es:cambios_en_la_imagen_1.png?direct&300 |}}\\ \\ Al ejecutar el caso:\\ \\ {{ :es:cambios_en_la_imagen_4.png?direct&300 |}}\\ \\ {{ :es:cambios_en_la_imagen_2.png?direct&300 |}}\\ \\ Va marcando las diferencias que encuentra, que son justamente las bolas amarillas, añadidas con un recuadro rojo y la diferencia es de:\\ \\ {{ :es:cambios_en_la_imagen_3.png?direct&300 |}}\\ \\ **Cuarto ejemplo: misma imagen ensombrecida**.\\ \\ En este ejemplo se va a comparar con la misma imagen, pero más ensombrecida.\\ \\ {{ :es:comparar_imagen_ensombrecida.png?direct&300 |}}\\ \\ Nos dice que la imagen es diferente en su totalidad, ya que la recuadra toda en rojo:\\ \\ {{ :es:comparar_imagen_ensombrecida_1.png?direct&300 |}}\\ \\ {{ :es:comparar_imagen_ensombrecida_2.png?direct&300 |}} \\ \\ Pero al ser la misma imagen, la diferencia que encuentra no es muy alta. Es del:\\ \\ {{ :es:comparar_imagen_ensombrecida_3.png?direct&300 |}}\\ \\ **Quinto ejemplo: dos imágenes distintas**\\ \\ Si comparamos dos imágenes completamente distintas la diferencia empieza a ser del 20 %.\\ \\ En este ejemplo, elegimos para comparar, la imagen del avión:\\ \\ {{ :es:comparar_imagenes_distintas_1.png?direct&300 |}}\\ \\ {{ :es:comparar_imagenes_distintas_2.png?direct&300 |}}\\ \\ En la carpeta del TCD, nos devuelve la segunda imagen, la imagen del avión remarcada en rojo.\\ \\ {{ :es:comparar_imagenes_distintas_3.png?direct&400 |}} \\ \\ La diferencia se acerca al 20. Cuando se acerca al 20, ya no tiene nada que ver una con otra.\\ \\ {{ :es:comparar_imagenes_distintas_4.png?direct&400 |}}\\ \\ * **Resize**: permite redimensionar una imagen. Tiene tres parámetros de entrada: * **ImageToTransform**: ruta de la imagen a transformar. Es opcional. Si el usuario no introduce ninguna ruta, TAST utiliza la ruta del adaptador de imagen. * **Scale**: es un dato obligatorio Si el número es positivo aumenta la imagen. Si es un número negativo reduce la imagen. * **ResultPath**: ruta a la carpeta donde dejar el resultado. Es opcional. Si está vacío, la imagen resultante estará en la ruta TCD.\\ \\ Vamos a ver unos ejemplos:\\ \\ **Primer ejemplo: agrandar una imagen**.\\ \\ Hemos elegido una imagen, en este caso, la imagen de un gato:\\ \\ {{ :es:redimensionar_0.png?direct&300 |}} \\ \\ IMPORTANTE: Esta función **también** nos permite redimensionar otra imagen. Si rellenamos este valor (enmarcado a continuación en rojo), nos redimensionará la imagen que le pongamos, no la que tiene el adaptador en su configuración.\\ \\ En nuestro ejemplo vamos a agrandar la imagen del gato. Le añadimos el valor **10**.\\ \\ {{ :es:redimensionar_otra_imagen.png?direct&300 |}}\\ \\ Ejecutamos el caso de prueba\\ \\ {{ :es:redimensionar_1.png?direct&300 |}}\\ \\ El resultado nos dice que ha ido bien:\\ \\ {{ :es:redimensionar_3.png?direct&300 |}}\\ \\ Y obtenemos como resultado la imagen del gato ampliada. Si nos vamos a Propiedades, vemos que el tamaño de la imagen es 10 veces mayor:\\ \\ {{ :es:redimensionar_4.png?direct&200 |}}\\ \\ Ya que el tamaño de la imagen inicial, con la que partíamos, era de:\\ \\ {{ :es:redimensionar_5.png?direct&200 |}}\\ \\ **Segundo ejemplo: reducir una imagen**. \\ \\ Partimos de la misma imagen inicial y para conseguir reducirla le añadimos el valor **-10**:\\ \\ {{ :es:redimensionar_7.png?direct&300 |}}\\ \\ Obtenemos como resultado la imagen del gato muy reducida. Si nos vamos a Propiedades, vemos que el tamaño de la imagen es 10 veces menor:\\ \\ {{ :es:redimensionar_6.png?direct&200 |}}\\ \\ IMPORTANTE: Si ahora quisiéramos comparar la imagen ampliada y la imagen reducida, debemos poner en la configuración del Adaptador la imagen grande para que la compare con la imagen pequeña, de esta manera acortamos el tiempo que tarda en generarse la imagen resultante. Porque el resultado es una tercera imagen que se genera a partir de la segunda imagen (no la del adaptador). Por tanto, si la segunda imagen es muy grande, al adaptador le llevará mucho tiempo copiarla. * **transformBlackAndWhite**: permite transformar una imagen en color, en una imagen en blanco y negro. Tiene dos parámetros de entrada: * **ImageToTranform**: ruta de la imagen a transformar. Es opcional. Si el usuario no introduce ninguna ruta, TAST utiliza la ruta del adaptador de imagen. * **ResultPath**: ruta a la carpeta donde dejar el resultado. Es opcional. Si está vacío, la imagen resultante estará en la ruta del TCD.\\ \\ Vemos un ejemplo:\\ \\ {{ :es:blancoynegro_1.png?direct&300 |}} \\ \\ Hemos elegido una imagen, en este caso, la imagen de un elefante. Es la imagen que ponemos en el Adaptador:\\ \\ {{ :es:blancoynegro_4.png?direct&300 |}}\\ \\ {{ :es:blancoynegro_3.png?direct&300 |}}\\ \\ No rellenamos ninguno de los campos. Por tanto, lo que va a hacer es transformar la imagen del elefante en color en una imagen del elefante en blanco y negro.\\ \\ {{ :es:blancoynegro_2.png?direct&300 |}}\\ \\ {{ :es:blancoynegro_5.png?direct&300 |}}\\ \\ Ejecutamos el caso de prueba\\ \\ {{ :es:blancoynegro_4.1.png?direct&300 |}}\\ \\ Y obtenemos como resultado este elefante transformado en blanco y negro:\\ \\ {{ :es:blancoynegro_4.2.png?direct&300 |}}\\ \\ {{ :es:blancoynegro_6.png?direct&300 |}}\\ \\