2014-11-23 24 views
7

Pracuję nad wyświetlaniem tekstu na wyświetlaczu matrycy 8x8 i nie mam pod ręką pliku .ttf, który znam na moim BeagleBone.Jak ustawić rozmiar domyślnej czcionki ładowanej przez PIL, aby pasowała do mojej matrycy 8x8?

Zgodnie z przykładem here, powinienem być w stanie powiedzieć font = ImageFont.load_default() zamiast ładowania pliku .ttf, ale to oczywiście nie określa wymiarów czcionki! Jakikolwiek sposób to zrobić? Alternatywnie, czy istnieje miejsce, które znasz na pewno mogę znaleźć czcionkę .ttf na mojej wersji Ubuntu 14.04.1 BBB?

import Image 
import ImageDraw 
import ImageFont 

# Create blank image for drawing. 
# Make sure to create image with mode '1' for 1-bit color. 
width = disp.width 
height = disp.height 
image = Image.new('1', (width, height)) 
# Load default font. 
font = ImageFont.load_default() 

# Alternatively load a TTF font. 
# Some other nice fonts to try: http://www.dafont.com/bitmap.php 
#font = ImageFont.truetype('Minecraftia.ttf', 8) 

# Write two lines of text. 
draw.text((x, top), 'Hello', font=font, fill=255) 
draw.text((x, top+20), 'World!', font=font, fill=255) 
+0

można konwertować czcionki formacie BDF do pilformat używając [** _Program narzędziowy pilfont _ **] (http://effbot.org/imagingbook/pilfont.htm). Jest to skrypt w katalogu/Python/Scripts. Znalazłem czcionkę 8x8 BDF, którą można pobrać z [tutaj] (https://beej.us/c64bdf/) – martineau

Odpowiedz

1

Nie ma opcji, aby wybrać rozmiar czcionki load_default dlatego, że jest to format czcionki rastrowe. Jeśli zaznaczysz kod ImageFont.py, to faktycznie zapisuje informacje o czcionce tam, zakodowane w base64. Nie wiesz, gdzie możesz znaleźć na pewno czcionkę w swojej dystrybucji, ale najlepszym na pewno, przyszłościowym sposobem może być faktyczne zrobienie tego samego i dołączenie danych o czcionce do skryptu. Zobacz tutaj: https://github.com/python-pillow/Pillow/blob/master/PIL/ImageFont.py

Alternatywnie, można po prostu użyć wbudowanej w czcionce, dowiedzieć się rozmiar, a następnie zmniejszać do wielkości wyświetlacza: http://effbot.org/imagingbook/imagedraw.htm#tag-ImageDraw.Draw.textsize