我想从TrueType字体生成固定宽度的C Header / Include。 转换为固定宽度的位图已经有效。
import ImageFont, ImageDraw, Image
fontSize = 32
fontWidth = 20
numFonts = 1
numChars = 127-32 # Because the first 32 characters are not visible.
image = Image.new( 'RGB', (fontWidth*numChars,fontSize*numFonts), "black")
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("whitrabt.ttf", fontSize)
font2 = ImageFont.truetype("saxmono.ttf", fontSize)
font3 = ImageFont.truetype("MODENINE.TTF", fontSize)
# ASCII Characters from 32 DEC to 127 are visible
for x in range(32,127):
draw.text(((x-32)*20, 0),chr( x), font=font)
draw.text(((x-32)*20, 32),chr( x), font=font2)
draw.text(((x-32)*20, 64),chr( x), font=font3)
// Convert to Grayscale for Grayscale LCD
image = image.convert('L')
image.show()
这可以正常工作,但不知怎的,我无法管理它 将像素数据输出为C-Array。
答案 0 :(得分:0)
您可以使用load()
方法访问像素数据。
pixels = image.load()
如果你想要一个大C数组中的所有像素,你可以这样做:
print 'const char pixels[] = {'
w, h = image.size
for y in range(h):
print '\t',
for x in range(w):
print pixels[x,y], ',',
print
print '};'
(对于灰度图像,pixels
将包含整数,对于彩色图像,它将是(R,G,B)元组。)