posso visualizzare un JPG o PNG sul framebuffer (/ dev / fb *)?


19

So di poter catturare il framebuffer in Linux usando qualcosa di simile cp /dev/fb0 ~/myimagee ri-visualizzarlo copiando di nuovo sul dispositivo in questo modo cp ~/myimage /dev/fb0. In quale formato sono i dati dell'immagine di framebuffer? e come potrei fare per visualizzare un'immagine prefabbricata (jpg, png) sul framebuffer? Posso convertire in questo formato usando imagemagick?

ps Sto usando un raspberry pi che esegue raspbian.



Aggiornamento 11-12-2012

Ho finito per usare pygame per visualizzare immagini nella mia applicazione. Non sono sicuro se questo utilizza il frame buffer per visualizzare le immagini. Ma soddisfa abbastanza bene le mie esigenze.

Risposte:


8

Hai provato Fbida ?

fbidacontiene fbiun visualizzatore di immagini per il framebuffer.

Link alla fbipagina man - http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html

PS: non sono sicuro che funzionerà in Raspbian.


Sfortunatamente non sembra possibile impedire a "fbi" di visualizzare una barra di stato nella parte inferiore dello schermo. Questo è un po 'uno showtopper per varie applicazioni ...
Jules

3
@Jules Su Debian 8 (testing), c'è -noverboseun'opzione che consente di visualizzare solo l'immagine stessa; tuttavia, questo non è documentato nella pagina man, ma è solo in "use:" per esso.
Abbafei,

Funziona? In precedenza avevo creato una copia dalla fonte sulla pagina Web dell'autore e che aveva l'opzione, ma l'opzione non sembrava fare nulla in quella versione.
Jules,

@Jules -noverbosefunziona per me usando fbisu raspbian quando l'ho installato usando apt-get install fbi.
D. Woods,


2

In quale formato sono i dati dell'immagine di framebuffer?

La documentazione del kernel 4.2 di Linux https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 dice:

I pixel sono archiviati in memoria in formati dipendenti dall'hardware. Le applicazioni devono essere consapevoli del formato di archiviazione dei pixel per poter scrivere i dati delle immagini nella memoria del frame buffer nel formato previsto dall'hardware.

I formati sono descritti da tipi di frame buffer e immagini. Alcuni elementi visivi richiedono informazioni aggiuntive, che vengono archiviate nelle informazioni variabili dello schermo bits_per_pixel, scala di grigi, rosso, verde, blu e campi transp.

Gli elementi visivi descrivono come le informazioni sul colore vengono codificate e assemblate per creare macropixel. I tipi descrivono come i macropixel vengono archiviati in memoria. Sono supportati i seguenti tipi e elementi visivi.

Segue un elenco di elementi visivi e tipi, ma la descrizione non è sufficiente per comprendere immediatamente i formati esatti.


1
@Downvoters per favore spiega in modo che io possa imparare e migliorare le informazioni. Non mi ritroverò mai. Grazie.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1

Se vuoi cp /dev/fb0 ~/myimage, l'immagine dovrebbe contenere solo le informazioni sui pixel e l'ordine dovrebbe essere giusto ( RGB, BGR, RGBA, ARGB...)

Voglio fare anche questo, ma non ho trovato uno strumento adatto, quindi uso Python per aiutarmi a pre-creare l'immagine. Puoi provare questo .


0

Se è possibile installarli, fbcatverrà creata un'immagine ppm e fbgrabverrà creata un'immagine png.


0

Guarda /usr/include/linux/fb.h su strutture come fb_var_screeninfo. Ci possono essere una varietà di profondità e formati di colore. Vedo 16 bit / pixel troppo spesso, in questo momento ne ho 32. Digita fbset da solo e visualizzerà le impostazioni correnti. Che sarà quasi sicuramente una delle voci in /etc/fb.modes.

upstairs# fbset

mode "1920x1080"
    geometry 1920 1080 1920 1080 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Imagemagick potrebbe funzionare se riesci a far corrispondere esattamente la modalità di cui hai bisogno. Probabilmente scriverei qualcosa in C, una dozzina di righe che chiamano libjpeg o libpng possono decomprimere un'immagine in un array di memoria. I tuoi bit / colore ecc. Devono corrispondere o devi scrivere qualcosa per convertirlo. Buona esperienza.

Inoltre, anziché leggere / scrivere / dev / fb0 come file, aprirlo () per ottenere un descrittore di file, quindi mmap () in modo da lavorare con un puntatore alla memoria. È molto più veloce nel fare trasferimenti, almeno 10 volte.

Ma per mettere le immagini sullo schermo installo solo qiv. Quindi premi F1 per chiedere aiuto, ma una x mentre visualizza un'immagine la scriverà in modo semi-permanente nella finestra principale se è quello che vuoi. O semplicemente impostalo come sfondo nelle Preferenze del desktop e verrà visualizzato ad ogni avvio.


Apparentemente il mio ARGB (Raspbian). Ho iniziato con i colori di tipo HTML da un selettore di colori GIMP, ho fatto 4 tentativi per farlo bene.
Alan Corey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.