PIL.UnidentifiedImageError: 无法识别图像文件

新手上路,请多包涵

我正在研究 GCP 云功能,并打算编写一个结合两个图像的功能。但是我’,当我调用该函数时出现以下错误:

回溯(最近调用最后):文件“/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py”,第 346 行,在 run_http_function result = _function_handler.invoke_user_function(flask.request ) 文件“/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py”,第 217 行,invoke_user_function 返回 call_user_function(request_or_event) 文件“/env/local/lib/python3. 7/site-packages/google/cloud/functions/worker.py”,第 210 行,在 call_user_function 返回 self._user_function(request_or_event) 文件“/user_code/main.py”,第 74 行,在执行 newIntro=generateIntroImage(nameMappings[ ‘stdName’], nameMappings[‘stdPicture’], nameMappings[‘logo’], nameMappings[‘stdYear’], nameMappings[‘font’]) 文件“/user_code/main.py”,第 12 行,在 generateIntroImage 图像中。 append(Image.open(logo)) 文件“/env/local/lib/python3.7/site-packages/PIL/Image.py”,第 2862 行,打开“无法识别图像文件 %r”%(文件名如果filename else fp) PIL.UnidentifiedImageError: 无法识别图像文件’/tmp/logo.jpg’

我在我的本地机器上运行了这个函数并且它按预期工作但是当我在 GCP 上部署它时,它给出了这个错误并崩溃了。这是我的功能:

 from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw

def generateIntroImage(stdName, stdPicture, logo, year, typeFace):
    images = [Image.open(x) for x in [stdPicture, logo]]
    widths, heights = zip(*(i.size for i in images))
    total_width = sum(widths)
    max_height = max(heights)
    new_im = Image.new('RGB', (total_width, max_height))
    x_offset = 0
    for im in images:
        new_im.paste(im, (x_offset,0))
        x_offset += im.size[0]

    font= ImageFont.truetype(typeFace, 70)
    draw= ImageDraw.Draw(new_im)
    draw.text((0, 0), stdName+"'s " +year+" Year Book", (0,0,0),font= font)
    fileName= "/tmp/test.jpg"
    new_im.save(fileName)
    return fileName

这些图像是 .jpg 和 .png 文件。知道什么可能是错的吗?

原文由 Muhammad Usama 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
1 个回答

在 Google Colab 上也发生在我身上,显然更新 PIL 版本为我解决了这个问题。

原文由 Jjang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进