Sé que puedo capturar el framebuffer en linux usando algo así cp /dev/fb0 ~/myimage
y volver a mostrarlo volviendo al dispositivo así cp ~/myimage /dev/fb0
. ¿En qué formato están los datos de la imagen framebuffer? y ¿cómo haría para mostrar una imagen prefabricada (jpg, png) al framebuffer? ¿Puedo convertir a este formato usando imagemagick?
ps Estoy usando un raspberry pi corriendo raspbian.
Actualización 12-12-2012
Terminé usando pygame para mostrar imágenes en mi aplicación. No estoy seguro si esto usa el frame-buffer para mostrar las imágenes. Pero satisface mis necesidades bastante bien.
fuente
-noverbose
opción que hace que muestre solo la imagen en sí; sin embargo, esto no está documentado en la página del manual, sino que solo está en el "uso:" para el mismo.-noverbose
funciona para mí usandofbi
raspbian cuando lo instalé usandoapt-get install fbi
.podría ayudarlo, manual detallado http://hacklab.cz/2012/04/22/usefulness-linux-framebuffer-virtual-console Creo que tiene todo en un solo lugar sobre Linux Framebuffer
fuente
La documentación de Linux kernel 4.2 https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 dice:
Sigue una lista de imágenes y tipos, pero la descripción no es suficiente para que comprenda los formatos exactos de inmediato.
fuente
Si lo desea
cp /dev/fb0 ~/myimage
, la imagen solo debe contener la información de píxeles, y el orden debe ser correcto (RGB, BGR, RGBA, ARGB
...)También quiero hacer esto, pero no encontré una herramienta adecuada, por lo que utilizo python para ayudarme a hacer la imagen previamente. Puedes probar esto .
fuente
Si puede instalarlos,
fbcat
creará una imagen en ppm yfbgrab
creará una imagen png.fuente
Mire /usr/include/linux/fb.h en estructuras como fb_var_screeninfo. Puede haber una variedad de profundidades y formatos de color. Veo 16 bits / píxel con demasiada frecuencia, ahora tengo 32. Escriba fbset solo y mostrará la configuración actual. Que seguramente será una de las entradas en /etc/fb.modes.
Imagemagick podría funcionar si puede hacer que coincida exactamente con el modo que necesita. Probablemente escribiría algo en C, una docena de líneas que llaman libjpeg o libpng pueden descomprimir una imagen en una matriz de memoria. Tus bits / color, etc., deben coincidir o debes escribir algo para convertirlo. Buena experiencia.
Además, en lugar de leer / escribir / dev / fb0 como un archivo, ábralo () para obtener un descriptor de archivo y luego mmap () para que esté trabajando con un puntero a la memoria. Es mucho más rápido hacer transferencias, al menos 10 veces.
Pero para poner imágenes en la pantalla solo instalo qiv. Luego presione F1 para obtener ayuda, pero una x mientras muestra una imagen la escribirá semipermanentemente en la ventana raíz si eso es lo que desea. O simplemente configúrelo como fondo de pantalla en Preferencias de escritorio y aparecerá en cada arranque.
fuente