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

时间:2020-02-11 12:34:30

标签: python-3.x google-cloud-functions

我正在研究GCP云功能,打算编写一个将两个图像结合在一起的功能。但是我在调​​用该函数时收到以下错误:

回溯(最近通话最近):文件 “ /env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py”, 第346行,在run_http_function结果中= _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'])文件 generateIntroImage中的“ /user_code/main.py”,第12行 images.append(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

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

2 个答案:

答案 0 :(得分:2)

在Google Colab上也发生了我的事,显然更新了PIL版本对我来说解决了这个问题。

答案 1 :(得分:-1)

您需要提供图片的可下载链接。对我有用的是点击下载图片并复制该 URL。