Python:从PIL原始像素数据生成C阵列

时间:2014-08-06 14:08:47

标签: python python-imaging-library

我想从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。

1 个答案:

答案 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)元组。)