我正在研究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文件。知道有什么问题吗?
答案 0 :(得分:2)
在Google Colab上也发生了我的事,显然更新了PIL版本对我来说解决了这个问题。
答案 1 :(得分:-1)
您需要提供图片的可下载链接。对我有用的是点击下载图片并复制该 URL。