ラズパイのフレームバッファ(/dev/fb0)に日本語テキスト出力

5/20/2021

pygame python RaspberryPi フレームバッファ

t f B! P L

ラズパイでCUIモードでも画面描画したい


ラズパイでX-Window使うのも良いのですが、CPUリソースをより多く使うプログラムなどを稼働させる場合はCUIモードで使いたい。

ただ、CUIモードだと文字しか表示できないし、何か表示するにも少し物足りない。

何か良い方法はないかと調べてみたら、フレームバッファ(/dev/fb0)に画像表示など描画できるらしい。

画像の表示するには、fbiというコマンドを使う。
インストールされてなければ、aptコマンドでインストールする。
$ sudo apt install fbi

画像表示のコマンドは、以下のように実行する。
$ sudo fbi -nocomments -noverbose -a -T 1 -d /dev/fb0 JPEGファイル等

これはいい。
フォトフレームとかなら、非力なラズパイZEROでもすぐ作れちゃいますね。

任意のテキスト文字も表示してみたい

画像表示できるなら、テキスト文字だって出力できるライブラリくらいあるよね。
やるならpythonがいいかな。

で、調べてみたら、pygameライブラリを使うと簡単に出来そうです。

ついでに、日本語フォントも使ってみたい。
フォントは、pygame.font.Font でフォントファイルを指定すればいいみたい。
ここは、PAexフォントを使ってみます。
https://moji.or.jp/ipafont/ipafontdownload/

ダウンロードしたファイルは、適当なところに保管して、pygame.font.Fontで保管パスを含めてファイル名を引数で渡せばいい。

サンプルプログラム(デジタル時計表示)

環境が整ったので、デジタル時計でも表示してみます。
背景画像を時間帯で切り替えるのもいいですね。今回はやらないけど。
import pygame, sys, os
import datetime
from pygame.locals import *
from time import sleep 
import locale

locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')

FONT_PATH="/home/pi/ipaexg.ttf"
os.environ["SDL_FBDEV"] = "/dev/fb0"
pygame.init()

screen = pygame.display.set_mode((0, 0), 0, 32)
basicfont = pygame.font.Font(FONT_PATH, 200)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    screen.fill((20, 20, 20))
    now_dt = datetime.datetime.now()
    now_d = str( now_dt.strftime('%Y年%-m月%-d日(%a)'))
    now_t = str( now_dt.strftime('%H:%M:%S'))

    text1 = basicfont.render(now_d, True, (200, 200, 200))
    textrect1 = text1.get_rect()
    textrect1.centerx = screen.get_rect().centerx
    textrect1.centery = screen.get_rect().centery /2 
    screen.blit(text1, textrect1)

    text2 = basicfont.render(now_t, True, (200, 200, 200))
    textrect2 = text2.get_rect()
    textrect2.centerx = screen.get_rect().centerx
    textrect2.centery = screen.get_rect().centery + textrect1.centery
    screen.blit(text2, textrect2)

    pygame.display.update()
    sleep(1)

表示された画面はこちら。

このブログを検索

注目の記事

謎のディスク容量不足はThunderbirdの設定をチェック

Thunderbirdのimap設定の罠 imap設定にしておけば、PCの容量あまり食わないと思うじゃ無いですか!! いつからなのか分からないけど、デフォルトが 「すべてのメッセージをローカルに同期する」 になっています。 原因不明の容量不足に悩んでいる人でThund...

人気記事

ブログ アーカイブ

QooQ