dapatkah saya menampilkan JPG atau PNG ke framebuffer (/ dev / fb *)?

19

Saya tahu saya dapat menangkap framebuffer di linux menggunakan sesuatu seperti cp /dev/fb0 ~/myimagedan menampilkannya kembali dengan cara kembali ke perangkat seperti itu cp ~/myimage /dev/fb0. Apa format data gambar framebuffer? dan bagaimana cara menampilkan gambar yang sudah dibuat sebelumnya (jpg, png) ke framebuffer? Bisakah saya mengonversi ke format ini menggunakan imagemagick?

ps Saya menggunakan pi raspberry menjalankan raspbian.



Perbarui 11-12-2012

Saya akhirnya menggunakan pygame untuk menampilkan gambar di aplikasi saya. Tidak yakin apakah ini menggunakan frame-buffer untuk menampilkan gambar. Tapi itu memenuhi kebutuhan saya dengan cukup baik.

ndmweb
sumber

Jawaban:

8

Sudahkah Anda mencoba Fbida ?

fbidaberisi fbi, penampil gambar untuk framebuffer.

Tautan ke fbihalaman manual - http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html

PS - Saya tidak yakin apakah itu akan berhasil di Raspbian.

VenkatH
sumber
Sayangnya sepertinya tidak mungkin untuk mencegah 'fbi' menampilkan bilah status di bagian bawah layar. Ini sedikit showstopper untuk berbagai aplikasi ...
Jules
3
@ Jules Pada Debian 8 (pengujian), ada -noverboseopsi yang membuatnya hanya menampilkan gambar itu sendiri; Namun, ini tidak didokumentasikan di halaman manual, tetapi hanya di "penggunaan:" untuk itu.
Abbafei
Apakah itu bekerja? Saya sebelumnya membuat salinan dari sumber di halaman web penulis, dan itu memang memiliki opsi, tetapi opsi itu tampaknya tidak benar-benar melakukan apa pun dalam versi itu.
Jules
@ Jules -noverboseberfungsi untuk saya gunakan fbipada raspbian ketika saya menginstalnya menggunakan apt-get install fbi.
D. Woods
2

Apa format data gambar framebuffer?

Dokumentasi Linux kernel 4.2 https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 mengatakan:

Pixel disimpan dalam memori dalam format yang tergantung pada perangkat keras. Aplikasi perlu mengetahui format penyimpanan piksel untuk menulis data gambar ke memori penyangga bingkai dalam format yang diharapkan oleh perangkat keras.

Format dijelaskan oleh tipe dan visual penyangga bingkai. Beberapa visual memerlukan informasi tambahan, yang disimpan dalam informasi layar variabel bits_per_pixel, skala abu-abu, merah, hijau, biru, dan transp.

Visual menggambarkan bagaimana informasi warna dikodekan dan dirakit untuk membuat macropixels. Jenis menggambarkan bagaimana macropixels disimpan dalam memori. Jenis dan visual berikut ini didukung.

Daftar visual dan tipe berikut, tetapi deskripsi tidak cukup bagi saya untuk segera memahami format yang tepat.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
1
@Downvoters tolong jelaskan agar saya dapat mempelajari dan meningkatkan info. Saya tidak pernah membalas. Terima kasih.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1

Jika Anda mau cp /dev/fb0 ~/myimage, gambar hanya boleh berisi informasi piksel, dan urutannya harus benar ( RGB, BGR, RGBA, ARGB...)

Saya ingin melakukan ini juga, tetapi tidak menemukan alat yang cocok, jadi saya menggunakan python untuk membantu saya membuat gambar sebelumnya. Anda bisa mencoba ini .

zqb-semua
sumber
0

Jika Anda dapat menginstalnya, fbcatakan membuat gambar ppm, dan fbgrabakan membuat gambar png.

Yves Dorfsman
sumber
0

Lihatlah /usr/include/linux/fb.h di struct seperti fb_var_screeninfo. Mungkin ada berbagai kedalaman dan format warna. Saya melihat 16 bit / pixel terlalu sering, sekarang saya memiliki 32. Ketik fbset dengan sendirinya dan itu akan menampilkan pengaturan saat ini. Yang hampir pasti akan menjadi salah satu entri di /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 mungkin berfungsi jika Anda dapat membuatnya cocok dengan mode yang Anda butuhkan. Saya mungkin akan menulis sesuatu dalam C, selusin baris yang memanggil libjpeg atau libpng dapat mendekompres gambar ke dalam array memori. Bit / warna Anda dll. Harus cocok atau Anda perlu menulis sesuatu untuk mengubahnya. Pengalaman yang baik.

Juga daripada membaca / menulis / dev / fb0 sebagai file, buka () untuk mendapatkan deskriptor file lalu mmap () sehingga Anda bekerja dengan pointer ke memori. Jauh lebih cepat dalam melakukan transfer, setidaknya 10x.

Tetapi untuk meletakkan gambar di layar saya hanya menginstal qiv. Kemudian tekan F1 untuk meminta bantuan, tetapi x saat menampilkan gambar akan menuliskannya secara semi-permanen ke jendela root jika itu yang Anda inginkan. Atau hanya mengaturnya sebagai wallpaper di Preferensi Desktop dan itu akan muncul setiap boot.

Alan Corey
sumber
ARGB milikku rupanya (Raspbian). Saya mulai dengan warna jenis HTML dari pemilih warna GIMP, mengambil 4 percobaan untuk memperbaikinya.
Alan Corey