web-dev-qa-db-ja.com

JPGまたはPNGをフレームバッファー(/ dev / fb *)に表示できますか?

私はcp /dev/fb0 ~/myimageのようなものを使用してLinuxでフレームバッファをキャプチャし、cp ~/myimage /dev/fb0のようにデバイスにコピーして再表示できることを知っています。フレームバッファーの画像データはどのような形式ですか?そして、どのように私はフレームバッファに既製の画像(jpg、png)を表示するのでしょうか? imagemagickを使用してこの形式に変換できますか?

pS私はraspbianを実行しているRaspberry Piを使用しています。



2012年12月12日更新

アプリケーションで画像を表示するために pygame を使用することになりました。これがフレームバッファを使用して画像を表示するかどうかは不明です。しかし、それは私のニーズをかなり満たしています。

19
ndmweb

試しましたか Fbida

fbidaには、フレームバッファーの画像ビューアーfbiが含まれています。

fbi manページへのリンク- http://manpages.ubuntu.com/manpages/lucid/man1/fbi.1.html

PS-Raspbianで動作するかどうかはわかりません。

8
VenkatH

それはあなたを助けるかもしれません、詳細なマニュアル http://hacklab.cz/2012/04/22/usefulness-linux-framebuffer-virtual-console Linuxフレームバッファに関するすべてが1か所にあると思います

3
MichaelHefner

フレームバッファーの画像データはどのような形式ですか?

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 を試すことができます。

1
zqb-all

それらをインストールできる場合、fbcatはppmイメージを作成し、fbgrabはPNGイメージを作成します。

1
Yves Dorfsman

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を押すと、それが必要な場合は半永久的にルートウィンドウに書き込まれます。または、デスクトップの設定で壁紙として設定すると、起動するたびに表示されます。

0
Alan Corey