Je sais que je peux capturer le framebuffer sous linux en utilisant quelque chose comme cp /dev/fb0 ~/myimage
et le réafficher en copiant sur l'appareil comme ça cp ~/myimage /dev/fb0
. Dans quel format les données d'image du tampon d'image sont-elles? et comment pourrais-je afficher une image prédéfinie (jpg, png) sur le framebuffer? Puis-je convertir dans ce format en utilisant imagemagick?
ps Im utilisant un raspberry pi exécutant raspbian.
Mise à jour 11-12-2012
J'ai fini par utiliser pygame pour afficher des images dans mon application. Je ne sais pas si cela utilise le frame-buffer pour afficher les images. Mais cela répond assez bien à mes besoins.
la source
-noverbose
option qui permet d'afficher uniquement l'image elle-même; cependant, cela n'est pas documenté dans la page de manuel, mais seulement dans l '"utilisation:" pour le it.-noverbose
fonctionne pour moi en utilisantfbi
sur raspbian lorsque je l'ai installé en utilisantapt-get install fbi
.cela pourrait vous aider, manuel détaillé http://hacklab.cz/2012/04/22/usefulness-linux-framebuffer-virtual-console Je pense qu'il a tout en un seul endroit sur Linux Framebuffer
la source
La documentation du noyau Linux 4.2 https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 dit:
Une liste de visuels et de types suit, mais la description ne me suffit pas pour comprendre immédiatement les formats exacts.
la source
Si vous le souhaitez
cp /dev/fb0 ~/myimage
, l'image ne doit contenir que les informations sur les pixels et l'ordre doit être correct (RGB, BGR, RGBA, ARGB
...)Je veux le faire aussi, mais je n'ai pas trouvé d'outil approprié, donc j'utilise python pour m'aider à pré-créer l'image. Vous pouvez essayer ça .
la source
Si vous pouvez les installer,
fbcat
créera une image ppm etfbgrab
créera une image png.la source
Regardez /usr/include/linux/fb.h sur des structures comme fb_var_screeninfo. Il peut y avoir une variété de profondeurs de couleurs et de formats. Je vois 16 bits / pixel trop souvent, en ce moment j'en ai 32. Tapez fbset par lui-même et il affichera les paramètres actuels. Ce sera certainement une des entrées de /etc/fb.modes.
Imagemagick pourrait fonctionner si vous pouvez le faire correspondre exactement au mode dont vous avez besoin. J'écrirais probablement quelque chose en C, une douzaine de lignes appelant libjpeg ou libpng peuvent décompresser une image dans un tableau de mémoire. Vos bits / couleur, etc. doivent correspondre ou vous devez écrire quelque chose pour le convertir. Bonne expérience.
De plus, plutôt que de lire / écrire / dev / fb0 en tant que fichier, ouvrez-le () pour obtenir un descripteur de fichier, puis mmap () pour que vous travailliez avec un pointeur sur la mémoire. Il est beaucoup plus rapide de faire des transferts, au moins 10 fois.
Mais pour mettre des images à l'écran, j'installe juste qiv. Appuyez ensuite sur F1 pour obtenir de l'aide, mais un x pendant l'affichage d'une image l'écrira de manière semi-permanente dans la fenêtre racine si c'est ce que vous voulez. Ou définissez-le simplement comme fond d'écran dans les préférences du bureau et il apparaîtra à chaque démarrage.
la source