如何解决在Python中以十六进制格式存储图像数据字体
|| 我正在尝试修改此代码(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)))
谢谢。
解决方法
基本上,不要那样做。正如您已经注意到的那样,它有些晦涩难懂,深奥,难以阅读且非常有限。 Python Imaging Library提供了使用Freetype2将文本渲染为PNG和JPEG的方法,这是一种更加精巧且功能完善的方法。
现在我们已经解决了这个问题,表示非常简单,并且在标准库中png模块的文档中也进行了说明:
有提到的第四种格式
因为它是内部使用的
接近PNG文件中的内容
本身,并得到了一些支持
公共API。这种格式称为
打包。打包时,每一行都是
字节序列(整数从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
...在等宽的终端字体中更明显,但仍然应该很明显。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。