iT邦幫忙

0

Google Cloud Function 文件路徑

  • 分享至 

  • xImage

請問如果我在 GCF 上 有一個想要參照的文件路徑,我應該怎麼放置?
本機端是放在同一資料夾下,但GCF我不知如何操作。

from PIL import Image, ImageDraw
from PIL import ImageFont

draw = ImageDraw.Draw(img)
font = ImageFont.truetype("simsun.ttc", 18).  ## <- 中文字體
froce iT邦大師 1 級 ‧ 2022-12-05 12:56:03 檢舉
之前有回過了,用mount的或是參照我回給你的去用。
@froce 感謝回覆!! 我其實對於本地端跟部署在雲端上是否有不一樣的作法感到好奇。 之前詢問本地端連線至 Storage, Force 大給的方法很有用,但目前想佈署在cloud function 上, 不知這樣的平台是否有自己的路徑方式。加上如果一定要把資料夾放storage, 因function 也是google 平台,雙方會否有內建機制,可以直接溝通,不需download as string 或 download to folder 呢? 例如,若以google vision api 作物件辨識去抓 storage 圖檔,就偶然發現,是可以直接連動的。
此外,若真要先放置到storage 再連路徑的話,不曉得是否仍是用download as strings呢?? 因為初學者,剛了解到音檔跟圖檔須轉為bytes, 但像這種"fonts" 的連接檔,是否在download 過程中有需要特殊處理。因此本文想探路,了解Google 雲端的部屬,麻煩版上各位前輩了!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
froce
iT邦大師 1 級 ‧ 2022-12-05 16:02:37
最佳解答

大概搞懂你要啥了。你的關鍵其實在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)
    ...

blob的api...
https://cloud.google.com/python/docs/reference/storage/latest/google.cloud.storage.blob.Blob#google_cloud_storage_blob_Blob_open

頗難找。

謝謝Froce大圖文並茂,文檔詳細~
那比如像示範圖例中,image和fonts都需要參照,如此blob跟 with open 是否需各寫一次?

froce iT邦大師 1 級 ‧ 2022-12-06 08:15:53 檢舉

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大不吝分享!!

我要發表回答

立即登入回答