Linuxでcp /dev/fb0 ~/myimage
のようなものを使ってフレームバッファをキャプチャし、cp ~/myimage /dev/fb0
のようにデバイスにコピーバックして再表示することができることは知っています。フレームバッファの画像データはどのような形式ですか? また、フレームバッファにあらかじめ作成された画像(jpg, png)を表示するにはどうすればいいですか?imagemagickでこの形式に変換できますか?
p.s. Imはraspbianを実行しているraspberry piを使用しています
11-12-2012を更新しました
私のアプリケーションで画像を表示するには、pygameを使うことにしました。これが画像を表示するためにフレームバッファを使用しているかどうかはわかりません。しかし、これは私のニーズをかなり満たしています
20 None 2012-10-30
Fbidaを試してみましたか?
fbida
には、フレームバッファ用の画像ビューアであるfbi
が含まれています
fbi
man ページへのリンク – http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html
P.S. – Raspbianで動作するかどうかはわかりません
8 VenkatH 2012-10-30
それはあなたを助けるかもしれない、詳細なマニュアルhttp://hacklab.cz/2012/04/22/usefulness-linux-framebuffer-virtual-console私はそれがLinux Framebufferについての1つの場所にすべてを持っていると思います
3 MichaelHefner 2012-12-18
フレームバッファの画像データはどのような形式になっていますか?
Linux カーネル 4.2 のドキュメント https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 には、こう書かれています
ピクセルは、ハードウェアに依存するフォーマットでメモリに格納されます。アプリケーションは、ハードウェアによって期待されるフォーマットで画像データをフレームバッファメモリに書き込むために、ピクセルの保存フォーマットを意識する必要があります
フォーマットは、フレームバッファタイプとビジュアルによって記述されています。ビジュアルの中には追加情報を必要とするものがあり、それらは可変スクリーン情報 bits_per_pixel、グレースケール、赤、緑、青、トランスポートフィールドに格納されています
ビジュアルは、色情報がどのようにエンコードされ、マクロピクセルを作成するために組み立てられるかを説明します。タイプは、マクロピクセルがどのようにメモリに格納されるかを説明します。以下のタイプとビジュアルがサポートされています
ビジュアルと種類のリストが続くが、説明だけではすぐに正確なフォーマットを理解するには不十分だ
2 Ciro Santilli 郝海东冠状病六四事件法轮功 2015-10-29
これらをインストールできれば、fbcat
でppmの画像を、fbgrab
でpngの画像を作成することができます
2 Yves Dorfsman 2015-10-30
cp /dev/fb0 ~/myimage
にしたい場合は、画像にはピクセル情報だけが含まれている必要があり、順序は正しいものでなければなりません(RGB, BGR, RGBA, ARGB
…)
私もこれをやりたいのですが、適当なツールが見つからなかったので、pythonを使ってプリメイドの画像を作ってみました。あなたはthisを試してみてください
1 zqb-all 2016-11-28
/usr/include/linux/fb.h を見て、fb_var_screeninfo のような構造体を見てください。色の濃さやフォーマットはいろいろあります。私は16bit/pixelをよく見ますが、今は32bitにしています。fbset と単独で入力すると、現在の設定を表示してくれます。これはほぼ確実に /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 が使えるかもしれません。おそらくC言語で何かを書くでしょう。libjpegやlibpngを呼び出す十数行で、画像をメモリ配列に展開することができます。ビット数や色などを一致させるか、変換するために何か書く必要があります。良い経験です
また、/dev/fb0 をファイルとして読み書きするのではなく、open() でファイルディスクリプタを取得してから mmap() して、メモリへのポインタを使って作業するようにしてください。この方が転送速度ははるかに速く、少なくとも 10 倍にはなります
しかし、画面に画像を表示するためにはqivをインストールするだけです。その後F1を押すとヘルプが表示されますが、画像を表示している間にxを押すと、ルートウィンドウに半永久的に書き込まれます。また、デスクトップ環境設定で壁紙として設定しておけば、起動するたびに壁紙が表示されます
0 Alan Corey 2019-02-03