roImagePlayer
22 min
este objeto muestra imágenes de mapa de bits estáticas en la pantalla de video la forma más sencilla de usar roimageplayer es realizar llamadas a displayfile() con el nombre de archivo como un string alternativamente, puede usar preloadfile() junto con displaypreload() para tener más control para obtener una estética más agradable al generar un reproductor de imágenes, use el objeto roimagewidget el equivalente en javascript es la etiqueta \<img> en html https //developer mozilla org/en us/docs/web/html/element/img creación de objetos el reproductor de imágenes se muestra creando primero instancias de rorectangle y roimageplayer y luego llamando a setrectangle() usando la instancia de rorectangle como argumento rectangle = createobject("rorectangle", 0, 0, 1024, 768) i = createobject("roimageplayer") i setrectangle(rectangle) ifimagecontrol displayfile(image filename as string) as boolean muestra la imagen con el nombre de archivo especificado la cadena image filename debe apuntar a un archivo png , jpeg , o bmp de 8 bits, 24 bits o 32 bits tenga en cuenta que los archivos de imagen jpeg con perfiles de color cmyk no son compatibles displayfile(parameters as roassociativearray) as boolean muestra una imagen usando un arreglo asociativo de parámetros de visualización nombre de archivo el nombre del archivo de imagen modo el modo de imagen consulte la entrada de setdefaultmode() a continuación para obtener más detalles transición la configuración de transición de la imagen consulte la entrada de setdefaulttransition() a continuación para obtener más detalles algoritmodecifrado el algoritmo de cifrado de archivos actualmente las opciones son "aesctr" y "aesctrhmac" clavedecifrado la clave para descifrar el archivo de imagen este es un arreglo de bytes que consta de 128 bits de clave, seguidos de 128 bits de iv consulte la sección descifrado de imágenes docid\ z65qez0xwq9c70obegcyi a continuación para obtener detalles sobre cómo mostrar imágenes cifradas el reproductor de imágenes ya no acepta claves de cifrado aes "{a|a}" (es decir, donde los 64 bits superiores e inferiores de la clave son idénticos) preloadfile(image filename as string) as boolean carga el archivo de imagen especificado en un búfer de memoria fuera de pantalla preloadfile(parameters as roassociativearray) as boolean carga un archivo de imagen en un búfer de memoria fuera de pantalla las propiedades de visualización de la imagen se determinan mediante un arreglo asociativo de parámetros nombre de archivo el nombre del archivo de imagen modo consulte la entrada de setdefaultmode() a continuación para obtener más detalles transición consulte la entrada de setdefaulttransition() a continuación para obtener más detalles displaypreload() as boolean usa el búfer de memoria en pantalla para mostrar la imagen almacenada en el búfer de memoria fuera de pantalla usando preloadfile() solo hay dos búferes de memoria uno se muestra en pantalla y el otro se usa para precargar imágenes preloadfile() puede llamarse varias veces antes de que se llame a displaypreload() y continuará cargando en el mismo búfer fuera de pantalla el método displayfile() llama a preloadfile() seguido inmediatamente por displaypreload() , por lo que cualquier imagen precargada previamente se perderá si no hay ninguna imagen precargada, displaypreload() no tendrá efecto stopdisplay() as boolean elimina una imagen de la pantalla displayfileex(filename as string, mode as integer, x as integer, y as integer) as boolean preloadfileex(filename as string, mode as integer, x as integer, y as integer) as boolean setdefaultmode(mode as integer) as boolean establece el modo de visualización de imagen predeterminado para displayfile() y preloadfile() si no se llama a setdefaultmode(), el modo predeterminado se establece en 0 (equivalente a que la imagen se centre sin escalado) los modos de visualización compatibles se enumeran a continuación 0 – centrar imagen no se aplica escalado el recorte solo ocurre si la imagen es más grande que la ventana 1 – escalar para ajustar la imagen se escala para que sea completamente visible, manteniendo su relación de aspecto 2 – escalar para rellenar y recortar la imagen se escala para que rellene completamente la ventana, manteniendo su relación de aspecto 3 – escalar para rellenar la imagen se estira para que rellene la ventana y la imagen completa sea visible la relación de aspecto no se mantendrá si es diferente de la ventana setdefaulttransition(transition as integer) as boolean establece la transición que se utilizará cuando se muestre la siguiente imagen las siguientes transiciones están disponibles 0 sin transición blit inmediato 1 4 barridos desde arriba, abajo, izquierda o derecha 5 8 explota desde el centro, la esquina superior izquierda, la esquina superior derecha, la esquina inferior izquierda o la esquina inferior derecha 10 11 utiliza un efecto de persiana veneciana vertical u horizontal 12 13 peina vertical u horizontalmente 14 se desvanece hasta el color de fondo y luego reaparece 15 realiza una transición gradual entre la imagen actual y la nueva imagen 16 19 se desliza desde arriba, abajo, izquierda o derecha 20 23 desliza toda la pantalla desde arriba, abajo, izquierda o derecha 24 25 escala la imagen antigua hacia dentro y luego la nueva hacia fuera nuevamente (esto funciona como una pseudorrotación alrededor de un eje vertical u horizontal) 26 29 expande una nueva imagen en la pantalla desde la derecha, izquierda, abajo o arriba settransform(transform as string) as boolean aplica una de ocho transformaciones a la imagen las llamadas a este método solo tienen efecto cuando se muestra el siguiente archivo tenga en cuenta que el rectángulo de la imagen en sí no cambia para adaptarse a la nueva relación de altura y anchura de una imagen transformada este método se puede llamar por separado en varias instancias de roimageplayer o roimagewidget identidad sin transformación (comportamiento predeterminado) rot90 rotación de 90 grados en sentido horario rot180 rotación de 180 grados rot270 rotación de 270 grados en sentido horario espejo transformación de espejo horizontal mirror rot90 rotación reflejada de 90 grados en sentido horario mirror rot180 rotación reflejada de 180 grados en sentido horario espejo rot270 rotación reflejada de 270 grados en sentido horario overlayimage(image filename as string, x as integer, y as integer) as boolean compone la imagen con el nombre de archivo especificado sobre la imagen principal de displayfile() utilice los enteros x y y para especificar su ubicación dentro del widget de imagen setrectangle(r as rorectangle) as boolean cambia el tamaño y la posición del rectángulo de imagen utilizando el objeto rorectangle getrectangle() as rorectangle devuelve un objeto rorectangle que tiene la misma ubicación y dimensiones que el objeto rorectangle utilizado para definir la ventana de imagen createtesthole(hole as rorectangle) as boolean crea un agujero en la imagen con la ubicación y las dimensiones especificadas en la instancia de rorectangle pasada cualquier ventana de video ubicada directamente debajo de la imagen se mostrará a través de ella este método interrumpirá la reproducción de imágenes y solo debe usarse con fines de prueba settransitionduration(duration as integer) as boolean establece la cantidad de tiempo que tarda (en milisegundos) en producirse un efecto de transición especificado la duración predeterminada de la transición es de 1000 milisegundos displaybuffer(a as object, b as integer, c as integer) as boolean hide() as boolean oculta la imagen que se muestra actualmente mediante el widget roimageplayer show() as boolean muestra la imagen que se está mostrando actualmente mediante el widget roimageplayer raise() as void envía el widget a la parte superior del orden z en el plano gráfico (es decir, delante de todas las demás superficies que implementan la interfaz ifwidget ) de forma predeterminada, los widgets nuevos se colocan en la parte superior del orden z gráfico algunas superficies siempre se dibujan en la parte superior del orden z gráfico, incluidos el cursor del mouse, los subtítulos ocultos y los marquesinas desplazables docid 2pwsmk6gfbdkc8rtfzkfj puede usar los métodos pausegraphics() / resumegraphics() en el objeto rovideomode # para garantizar que varios cambios en el orden z gráfico se produzcan simultáneamente lower() as void envía el widget a la parte inferior del orden z en el plano gráfico (es decir, detrás de todas las demás superficies que implementan la interfaz ifwidget ) de forma predeterminada, los widgets nuevos se colocan en la parte superior del orden z gráfico x, y los valores x e y indican qué posición de la imagen se debe centrar lo más cerca posible, o tanto x como y pueden establecerse en 1, lo que utiliza el centro de la imagen como el punto que se posicionará más cerca del centro para mostrar imágenes en una zona, se debe llamar a setrectangle() y enablezonesupport() debe incluirse en un script para usar la funcionalidad de zonas prueba de modos de visualización a continuación se muestran algunos comandos de shell de ejemplo que puede usar para probar los diferentes modos de visualización brightsign> image filename bmp 0 brightsign> image filename bmp 1 brightsign> image filename bmp 2 brightsign> image filename bmp 3 brightsign> image filename bmp 0 0 0 brightsign> image filename bmp 2 0 0 precarga de imágenes el siguiente script de ejemplo utiliza imágenes precargadas para mejorar la velocidad de la interfaz de usuario cuando el usuario presiona una tecla en el teclado tan pronto como se presiona una tecla, la pantalla cambia a la nueva imagen, que ya se ha precargado el único retraso posible ocurre si la tecla se presiona mientras la imagen se está precargando en este caso, la imagen se mostrará tan pronto como se cargue i = createobject("roimageplayer") p = createobject("romessageport") k = createobject("rokeyboard") k setport(p) i preloadfile("one bmp") loop i displaypreload i preloadfile("two bmp") wait(0,p) i displaypreload i preloadfile("one bmp") wait(0,p) goto loop descifrado de imágenes los objetos roimageplayer , roimagewidget , roclockwidget , rotextwidget , y rocanvaswidget pueden usarse para mostrar imágenes cifradas cada objeto tiene un método de reproducción de imágenes que acepta una matriz asociativa, que puede incluir los parámetros de descifrado encryptionalgorithm y encryptionkey póngase en contacto con support\@brightsign biz mailto\ support\@brightsign biz para obtener más información sobre cómo generar una clave para ofuscación y almacenarla en el reproductor puede llamar a rodeviceinfo hasfeature("media decryption") para determinar si un modelo de reproductor y una versión de firmware admiten el descifrado de imágenes ejemplo print "play encrypted image in an image widget" imageplayer = createobject("roimagewidget", r1) aa=createobject("roassociativearray") aa filename = "sd /images enc jpg" aa encryptionalgorithm = "aesctr" aa encryptionkey = createobject("robytearray") aa encryptionkey fromhexstring("01030507090b0d0f00020406080a0c0e00000000000000000000000000000000") imageplayer displayfile(aa) sleep(10000) imageplayer hide() print "play encrypted image with playstaticimage" videoplayer = createobject("rovideoplayer") aa=createobject("roassociativearray") aa filename = "sd /images enc jpg" aa encryptionalgorithm = "aesctr" aa encryptionkey = createobject("robytearray") aa encryptionkey fromhexstring("01030507090b0d0f00020406080a0c0e00000000000000000000000000000000") videoplayer playstaticimage(aa) sleep(10000) videoplayer = invalid print "show clock image" resourcemanager = createobject("roresourcemanager", "sd /resources txt") clockwidget = createobject("roclockwidget", r1, resourcemanager, {}) aa=createobject("roassociativearray") aa filename = "sd /images enc jpg" aa encryptionalgorithm = "aesctr" aa encryptionkey = createobject("robytearray") aa encryptionkey fromhexstring("01030507090b0d0f00020406080a0c0e00000000000000000000000000000000") clockwidget setbackgroundbitmap(aa, true) clockwidget show() sleep(10000) clockwidget hide() print "text widget with encrypted background image" twparams = createobject("roassociativearray") twparams linecount = 1 twparams textmode = 1 twparams rotation = 0 twparams alignment = 1 tw=createobject("rotextwidget",r1,1,2,twparams) tw\ setbackgroundcolor(\&h00ff0000) tw\ setforegroundcolor(\&hff00ff00) tw\ pushstring("encrypted background") 'tw\ setrectangle(r) aa=createobject("roassociativearray") aa filename = "sd /images enc jpg" aa encryptionalgorithm = "aesctr" aa encryptionkey = createobject("robytearray") aa encryptionkey fromhexstring("01030507090b0d0f00020406080a0c0e00000000000000000000000000000000") tw\ setbackgroundbitmap(aa, true) tw\ show() sleep(10000) tw\ hide() cw=createobject("rocanvaswidget", rect) canvas aa=createobject("roassociativearray") canvas aa filename = "sd /images enc jpg" canvas aa encryptionalgorithm = "aesctr" canvas aa encryptionkey = createobject("robytearray") canvas aa encryptionkey fromhexstring("01030507090b0d0f00020406080a0c0e00000000000000000000000000000000") cw\ setlayer(canvas aa, 1) cw\ show()