私はcp /dev/fb0 ~/myimage
のようなものを使用してLinuxでフレームバッファをキャプチャし、cp ~/myimage /dev/fb0
のようにデバイスにコピーして再表示できることを知っています。フレームバッファーの画像データはどのような形式ですか?そして、どのように私はフレームバッファに既製の画像(jpg、png)を表示するのでしょうか? imagemagickを使用してこの形式に変換できますか?
pS私はraspbianを実行しているRaspberry Piを使用しています。
2012年12月12日更新
アプリケーションで画像を表示するために pygame を使用することになりました。これがフレームバッファを使用して画像を表示するかどうかは不明です。しかし、それは私のニーズをかなり満たしています。
試しましたか Fbida ?
fbida
には、フレームバッファーの画像ビューアーfbi
が含まれています。
fbi
manページへのリンク- http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html
PS-Raspbianで動作するかどうかはわかりません。
それはあなたを助けるかもしれません、詳細なマニュアル http://hacklab.cz/2012/04/22/usefulness-linux-framebuffer-virtual-console Linuxフレームバッファに関するすべてが1か所にあると思います
フレームバッファーの画像データはどのような形式ですか?
Linuxカーネル4.2ドキュメント https://github.com/torvalds/linux/blob/v4.2/Documentation/fb/api.txt#45 言う:
ピクセルは、ハードウェア依存の形式でメモリに保存されます。アプリケーションは、ハードウェアが予期する形式でフレームバッファーメモリに画像データを書き込むために、ピクセルストレージ形式を認識する必要があります。
フォーマットは、フレームバッファのタイプとビジュアルによって説明されます。一部のビジュアルには追加情報が必要です。これらの情報は、可変画面情報のbits_per_pixel、grayscale、red、green、blue、transpフィールドに格納されます。
ビジュアルは、色情報がどのようにエンコードされ、マクロピクセルを作成するために組み立てられるかを説明します。タイプは、マクロピクセルがメモリに格納される方法を記述します。次のタイプとビジュアルがサポートされています。
ビジュアルとタイプのリストは次のとおりですが、説明では、正確なフォーマットをすぐに理解するのに十分ではありません。
あなたがしたい場合は cp /dev/fb0 ~/myimage
、画像にはピクセル情報のみを含める必要があり、順序は正しいはずです(RGB, BGR, RGBA, ARGB
...)
私もこれをやりたいのですが、適切なツールが見つからなかったので、pythonを使用して、イメージを事前に作成できるようにしています。 this を試すことができます。
それらをインストールできる場合、fbcat
はppmイメージを作成し、fbgrab
はPNGイメージを作成します。
Fb_var_screeninfoのような構造体で/usr/include/linux/fb.hを見てください。さまざまな色深度と形式が存在する可能性があります。 16ビット/ピクセルが頻繁に表示されますが、現在は32です。fbsetを単独で入力すると、現在の設定が表示されます。これは、ほぼ確実に/etc/fb.modesのエントリの1つになります。
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を押すと、それが必要な場合は半永久的にルートウィンドウに書き込まれます。または、デスクトップの設定で壁紙として設定すると、起動するたびに表示されます。