You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Cloud Functions中使用PIL如何指定字体文件路径?

在Google Cloud Functions中用PIL指定字体路径的两种可行方案

方案一:把字体文件打包进部署包

把simsun.ttc直接放在你的Cloud Functions项目根目录(和主函数文件同层级),部署时这个文件会被一起上传到云端。

为了避免路径问题,推荐用os模块动态拼接路径,代码示例:

import os
from PIL import Image, ImageDraw, ImageFont

# 获取当前函数文件的目录路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接字体文件的完整路径
font_path = os.path.join(current_dir, "simsun.ttc")
font = ImageFont.truetype(font_path, 18)

注意点:

  • 检查.gcloudignore文件,别把字体文件排除在外,不然部署时不会上传。
  • 这种方式适合字体文件较小的情况,无需额外依赖云存储,函数冷启动更快。

方案二:从Cloud Storage下载到临时目录使用

Cloud Functions提供了/tmp临时存储空间(最大512MB),可以先把字体上传到Cloud Storage的bucket,函数执行时下载到/tmp再加载:

代码示例:

from PIL import Image, ImageDraw, ImageFont
from google.cloud import storage
import os

storage_client = storage.Client()
# 替换成你的bucket名称和字体在Storage里的路径
bucket = storage_client.get_bucket("your-bucket-name")
font_blob = bucket.blob("fonts/simsun.ttc")

# 下载到临时目录
temp_font_path = "/tmp/simsun.ttc"
font_blob.download_to_filename(temp_font_path)

# 加载字体
font = ImageFont.truetype(temp_font_path, 18)

注意点:

  • 给Cloud Functions的服务账号配置读取该Storage bucket的权限(比如storage.objects.get权限)。
  • 临时目录的文件在函数执行结束后会被清理,冷启动时需要重新下载,适合字体文件较大或需要动态更换字体的场景。

内容的提问来源于stack exchange,提问作者april

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:35:16