2012-11-04 21 views
2

我已經成功地將一些Python代碼移植到使用PIL的ImageFont和ImageDraw生成動態圖像的App Engine。唯一剩下的問題是原來代碼中使用這樣的調用加載TrueType字體:如何在App Engine上加載PIL ImageFont的替代字體?

titlefont = ImageFont.truetype("Verdana Bold.ttf", titlefontsize) 

我不能只上傳字體文件,並在GAE直接訪問它(至少我不認爲我能夠?!)。我想可能以某種方式將字體數據轉儲到數據存儲區blob中,加載並將其提供到PIL中,但這看起來不夠優雅,而且如果每個使用PIL生成圖像的人都做同樣的事情,那麼相當浪費。目前我與ImageFont.load_default()卡住,雖然,這給了非常可怕的前瞻性結果。

是否有一些聰明的方式在GAE PIL中使用替代字體?我錯過了一些額外的API會返回可用的字體對象?

回答

2

當您部署它時,應用程序目錄中的任何文件都將與您的應用程序一起上傳。

所以是的,你應該可以通過將它保存在你的應用程序目錄下或者在你的應用程序目錄下來「存取」你需要的任何文件,並在必要時將它移動到那裏。

如果你想提供這些文件,那是不同的。 https://developers.google.com/appengine/docs/python/gettingstarted/staticfiles

但嘗試包括您的應用程序可以找到它的.ttf文件,它應該只是工作。

+0

很酷。是的,它的作品 - 不知道爲什麼我認爲它不會。我實際上已經很快嘗試過了,但是我不知道爲什麼只有這個原因,路徑被破壞了,字體文件也沒有找到。感謝指針! – oliversturm

+0

啊,是的,路徑 - 如果這有助於任何人 - 例如,我有我的GAE應用程序的根目錄中的我的字體文件在一個文件夾「字體」。然而,我的控制器代碼試圖訪問文件來加載字體,它本身就在一個子文件夾中。我**必須使用'字體/ Font.ttf'來訪問文件。不能有'/ fonts/Font.ttf'。奇怪的是,因爲路徑並非真的相對 - 至少與執行代碼無關。讓我困惑。無法訪問當前目錄中的文件。有一個基於根目錄的「相對」路徑。注意自我,現在記住這個:) – oliversturm

+0

該應用程序的當前工作目錄是您的應用程序的根目錄,而不是您當前所在的模塊 - 因此爲什麼相對於您的應用程序根目錄的路徑有效。絕對路徑不起作用,因爲您的應用程序不在服務器的根目錄中。 –

相關問題