[PYTHON] Faites défiler le japonais jusqu'à la LED du RaspberryPi Sense HAT

Je ne pouvais pas faire défiler le japonais avec l'API officielle de SenseHAT, j'ai donc essayé de le gérer en utilisant PIL de la police Python et Misaki. Il s'agit d'une image dans laquelle le texte est transformé en une seule image et découpé dans l'ordre du bord à une image 8 * 8.

python


# -*- encoding:utf8 -*-
import unicodedata
import time
import sys
from PIL import Image, ImageDraw, ImageFont
from sense_hat import SenseHat

#Obtenez le nombre total d'octets dans une chaîne
def count_byte(s):
    n = 0
    for c in s:
        wide_chars = u"WFA"
        eaw = unicodedata.east_asian_width(c)
        if wide_chars.find(eaw) > -1:
            n += 2
        else:
            n += 1
    return n

#Affichage de défilement sur Sense HAT
def show_scroll_string(
        disp_str, fore_color = "#ffffff", back_color = "#000000", interval = 0.1):
    '''
        disp_str   =Chaîne de caractères à afficher
        fore_color =Couleur du texte (facultatif)
        back_color =Couleur d'arrière-plan (facultatif)
        interval   =Intervalle d'affichage du défilement (facultatif)
    '''
    matrix_size = 8
    img_width = (count_byte(disp_str) * 4) + (matrix_size * 2)

    sense = SenseHat()
    font = ImageFont.truetype("/misaki_gothic.ttf", #Spécifiez le chemin de la police
                              8, encoding="unic")
    img_moto = Image.new("RGB", (img_width, matrix_size), back_color)
    draw = ImageDraw.Draw(img_moto)
    draw.text((matrix_size, 1), disp_str, font = font, fill = fore_color)
    img_moto.save("./img.png ", "PNG")

    for num in range(0, img_width - matrix_size):
        img = img_moto.crop((num, 0, matrix_size + num, matrix_size))
        img.save("./img_.png ", "PNG")
        sense.load_image("./img_.png ")
        time.sleep(interval)
    sense.clear()

# main
show_scroll_string(u"Chaîne de caractères Chaîne de caractères Chaîne de caractères.", fore_color="#ffff00", interval = 0.07)

Si vous spécifiez le chemin de la police et placez la chaîne de caractères de sortie dans l'argument de show_scroll_string et appelez-la, elle doit être défilée. 写真 2016-11-24 20 49 54.gif

Si vous souhaitez l'exécuter et l'utiliser tel quel, veuillez le faire à vos propres risques.
Sites référencés, etc.

Recommended Posts

Faites défiler le japonais jusqu'à la LED du RaspberryPi Sense HAT
Traduction japonaise du manuel e2fsprogs
Installation facile d'OpenCV sur RaspberryPi 3+
Traduction japonaise du manuel man-db
Traduction japonaise du manuel util-linux
Traduction japonaise du manuel iproute2
Étudiez l'effet des valeurs aberrantes sur la corrélation
Publier le sujet de Gmail sur Twitter
Afficher le graphique de tensorBoard sur Jupyter
Changer l'ordre de PostgreSQL dans Heroku
[Python] Localisation japonaise de matplotlib sur Ubuntu
La barre oblique arrière du clavier japonais est "ro"
Traduction japonaise: PEP 20 - Le Zen de Python
Le comportement de signal () dépend de l'option de compilation
[2020July] Vérifiez l'UDID de l'iPad sous Linux
Au moment de la mise à jour de python avec ubuntu
Changer la résolution d'Ubuntu s'exécutant sur VirtualBox
[Python] Get the day (anglais et japonais)
[AWS S3] Confirmation de l'existence de dossiers sur S3