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

Muh*_*ama 8 python-3.x google-cloud-functions

我正在研究 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 return call_user_function(request_or_event) 文件“/env/local/lib/python3.7” 7/site-packages/google/cloud/functions/worker.py”,第 210 行,在 call_user_function return 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 图像中。附加(Image.open(logo))文件“/env/local/lib/python3.7/site-packages/PIL/Image.py”,第2862行,打开“无法识别图像文件%r”%(文件名如果文件名 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
Run Code Online (Sandbox Code Playgroud)

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

Jja*_*ang 5

我在 Google Colab 上也遇到过这种情况,显然更新 PIL 版本解决了我的问题。