Ich konnte mit der offiziellen API von SenseHAT kein Japanisch scrollen, also habe ich versucht, mit PIL von Python und Misaki damit umzugehen. Dies ist ein Bild, bei dem der Text zu einem einzigen Bild verarbeitet und in der Reihenfolge vom Rand bis zu einem 8 * 8-Bild ausgeschnitten wird.
python
# -*- encoding:utf8 -*-
import unicodedata
import time
import sys
from PIL import Image, ImageDraw, ImageFont
from sense_hat import SenseHat
#Ermittelt die Gesamtzahl der Bytes in einer Zeichenfolge
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
#Bildlaufanzeige auf Sense HAT
def show_scroll_string(
disp_str, fore_color = "#ffffff", back_color = "#000000", interval = 0.1):
'''
disp_str =Zeichenfolge angezeigt werden
fore_color =Textfarbe (optional)
back_color =Hintergrundfarbe (optional)
interval =Bildlauf-Anzeigeintervall (optional)
'''
matrix_size = 8
img_width = (count_byte(disp_str) * 4) + (matrix_size * 2)
sense = SenseHat()
font = ImageFont.truetype("/misaki_gothic.ttf", #Geben Sie den Schriftpfad an
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"Zeichenkette Zeichenkette Zeichenkette.", fore_color="#ffff00", interval = 0.07)
Wenn Sie den Pfad der Schriftart angeben und die Ausgabezeichenfolge in das Argument show_scroll_string einfügen und aufrufen, sollte ein Bildlauf durchgeführt werden.
Wenn Sie es so ausführen und verwenden möchten, wie es ist, tun Sie dies bitte auf eigenes Risiko.
Referenzierte Websites usw.
Recommended Posts