請問如果我在 GCF 上 有一個想要參照的文件路徑,我應該怎麼放置?
本機端是放在同一資料夾下,但GCF我不知如何操作。
from PIL import Image, ImageDraw
from PIL import ImageFont
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("simsun.ttc", 18). ## <- 中文字體
大概搞懂你要啥了。你的關鍵其實在pillow...
你應該說一下你是要拿字體嵌入圖片,我一直以為你是要拿來當網站的靜態資源。
https://pillow.readthedocs.io/en/stable/reference/ImageFont.html#PIL.ImageFont.truetype
ImageFont.truetype可以接受一個 file-like object
然後blob.open()剛好可以產生一個file-like object。
storage_client = storage.Client()
bucket = storage_client.bucket( {bucket_name} )
blob = bucket.blob( {blob_name} )
with blob.open("r") as f:
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(f, 18)
...
頗難找。
謝謝Froce大圖文並茂,文檔詳細~
那比如像示範圖例中,image和fonts都需要參照,如此blob跟 with open 是否需各寫一次?
python 3.10 有個新功能 Parenthesized context managers
https://docs.python.org/3/whatsnew/3.10.html#parenthesized-context-managers
with (
blob1.open("r") as imgblob,
blob2.open("r") as fontblob
):
draw = ImageDraw.Draw(imgblob)
font = ImageFont.truetype(fontblob, 18)
cloud functions 應該可以用,要不然就只能用傳統的,一個一個開,結尾關掉。
https://cloud.google.com/functions/docs/concepts/python-runtime
又學到新的一招了,真想不到有這樣的功能!
感謝Froce大不吝分享!!