我正在尝试修改此代码(http://code.google.com/p/pypng/source/browse/trunk/code/texttopng),以便它可以呈现扩展的ASCII符号。目前我正在试图弄清楚如何以十六进制格式存储字体,但经过广泛的谷歌搜索后,我无法理解它,也无法扩展它。
我正在尝试解决的另一个问题是使用此脚本渲染甚至多行文档。我认为这与这行代码有关
return x,y,itertools.imap(lambda row: itertools.chain(*row),
zip(*map(char, m)))
谢谢。
答案 0 :(得分:2)
基本上,不要这样做。它有点模糊,深奥,难以阅读,而且非常有限,因为你已经注意到了自己。 Python Imaging Library使用Freetype2为PNG和JPEG提供文本渲染,这是一种更加完善和功能完备的方法。
现在我们已经解决了这个问题,表示非常简单,顺便提一下,标准库中的documentation of the png module也是如此:
提到了第四种格式 因为它在内部使用,是 接近PNG文件中的内容 本身,并得到了一些支持 公共API。调用此格式 包装。打包时,每行都是一个 字节序列(从0到0的整数) 255),就像在PNG之前一样 应用扫描线过滤。什么时候 比特深度基本上是8 与盒装行平面像素相同; [...]此格式由。使用
Writer.write_packed()
方法。
基本上,整数值中的位数范围为0-255,指定该行中的给定像素是打开/关闭的。使用相同代码中的char
函数,尝试通过在您喜欢的Python shell中执行类似的操作来对其进行可视化:
for row in char("A"):
print bin(row[0])[2:].zfill(8)
您最终应该输出如下输出:
00000000
00111000
01000100
01111100
01000100
01000100
01000100
00000000
...在等宽字体终端字体中更明显,但仍然应该非常明显。