Google app engine 如何在App Engine上为PIL ImageFont加载替代字体?

Google app engine 如何在App Engine上为PIL ImageFont加载替代字体?,google-app-engine,Google App Engine,我已经成功地将一些Python代码移植到应用程序引擎,该引擎使用PIL的ImageFont和ImageDraw生成动态图像。剩下的唯一问题是,原始代码使用如下调用加载TrueType字体: titlefont = ImageFont.truetype("Verdana Bold.ttf", titlefontsize) 我不能只上传字体文件,然后直接在GAE中访问它(至少我不认为我可以?!)。我想可能会以某种方式将字体数据转储到数据存储blob中,加载并将其输入到PIL中,但如果每个使用PIL

我已经成功地将一些Python代码移植到应用程序引擎,该引擎使用PIL的ImageFont和ImageDraw生成动态图像。剩下的唯一问题是,原始代码使用如下调用加载TrueType字体:

titlefont = ImageFont.truetype("Verdana Bold.ttf", titlefontsize)
我不能只上传字体文件,然后直接在GAE中访问它(至少我不认为我可以?!)。我想可能会以某种方式将字体数据转储到数据存储blob中,加载并将其输入到PIL中,但如果每个使用PIL生成图像的人都做同样的事情,那么这似乎不够优雅,而且相当浪费。目前我一直在使用
ImageFont.load\u default()
,这会产生非常可怕的结果


在GAE-PIL中是否有一些巧妙的方法可以使用其他字体?我缺少的一些附加API将返回可用的字体对象?

部署应用程序时,应用程序目录中的任何文件都将随应用程序一起上载

所以,是的,您应该能够“仅仅”访问您需要的任何文件,方法是将其保存在您的应用程序目录中或目录下,必要时将其移动到那里

如果你想提供这些文件,那就不一样了


但是试着把你的.ttf文件放在你的应用程序可以找到的地方,它应该可以正常工作

酷。是的,它起作用了——我不知道为什么我认为它真的不起作用。实际上,我很快就尝试了这个方法,但不知怎么的,路径被弄乱了,字体文件也没有被找到。谢谢你的指点!啊,是的,路径——如果这对任何人都有帮助的话——例如,我的字体文件位于GAE应用程序根目录下的“fonts”文件夹中。但是,试图访问文件以加载字体的控制器代码位于子文件夹中。我必须使用
字体/Font.ttf
访问该文件。不能有
/Font/Font.ttf
。奇怪的是,因为路径实际上不是相对的——至少不是相对于正在执行的代码。把我弄糊涂了。也无法访问当前目录中的文件。必须有一个基于根目录的“相对”路径。请赛尔夫注意,现在请记住:)应用程序的当前工作目录是应用程序的根目录,而不是您当前所在的模块-因此,相对于应用程序根目录的路径可以工作。绝对路径无效,因为您的应用程序不在服务器的根目录中。