- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Blob 触发器在本地调试 Azure 函数。将图像文件上传到 Azure 时,本地运行的函数会接收触发器。
def main(blobin: func.InputStream, blobout: func.Out[bytes], context: func.Context):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {blobin.name}\n"
f"Blob Size: {blobin.length} bytes")
image_file = Image.open(blobin)
我的函数.json
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "blobin",
"type": "blobTrigger",
"direction": "in",
"path": "uploads/{name}",
"connection": "STORAGE"
},
{
"name": "blobout",
"type": "blob",
"direction": "out",
"path": "uploads/{blob_name}_resized.jpg",
"connection": "STORAGE"
}
]
}
当Image.open(blobin)
行运行时出现的错误是:
System.Private.CoreLib: Exception while executing function:Functions.ResizePhoto. System.Private.CoreLib: Result: FailureException: UnidentifiedImageError: cannot identify image file<_io.BytesIO object at 0x0000017FD4FD7F40>
有趣的是,图像本身确实在 VSCode 监 window 口中打开,但在运行代码时失败。如果我再次将其添加到 watch 中(可能会触发 watch 刷新),它也会给出与上面相同的错误。
最佳答案
如果您想调整图像大小,然后通过函数 blob 触发器保存它,请尝试以下代码:
import logging
from PIL import Image
import azure.functions as func
import tempfile
import ntpath
import os
def main(blobin: func.InputStream, blobout:func.Out[func.InputStream], context: func.Context):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {blobin.name}\n"
f"Blob Size: {blobin.length} bytes")
temp_file_path = tempfile.gettempdir() + '/' + ntpath.basename(blobin.name)
print(temp_file_path)
image_file = Image.open(blobin)
image_file.resize((50,50)).save(temp_file_path)
blobout.set(open(temp_file_path, "rb").read())
os.remove(temp_file_path)
函数.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "blobin",
"type": "blobTrigger",
"direction": "in",
"path": "samples-workitems/{name}",
"connection": "STORAGE"
},
{
"name": "blobout",
"type": "blob",
"direction": "out",
"path": "resize/{name}",
"connection": "STORAGE"
}
]
}
请注意,您不应将调整大小的图像存储在同一个容器中,因为这会导致无限循环(新图像触发 blob 触发器并一次又一次调整大小),并且您的问题是由于新调整大小的图像输出不正确所致这样运行时就会出现异常:Image.open(blobin)
无论如何,上面的代码非常适合我,请参阅下面的结果:
关于azure - 尽管图像在 'watch' 中打开,但 Azure Blob 触发的 PIL UnidentifiedImageError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66251887/
我有一个包含数十万张图片的巨大 Zip 文件。我正在尝试读取内存中的这些图像并将像素数据提取到数组中。这个想法是在模型构建中使用展平的图像阵列。 PIL.Image 无法读取一些文件,并且在这种情况下
我正在研究 GCP 云函数,并打算编写一个结合两个图像的函数。但是,当我调用该函数时,出现以下错误: Traceback (most recent call last): File "/env/loc
我正在尝试使用 Blob 触发器在本地调试 Azure 函数。将图像文件上传到 Azure 时,本地运行的函数会接收触发器。 def main(blobin: func.InputStream, bl
我正在尝试使用 Blob 触发器在本地调试 Azure 函数。将图像文件上传到 Azure 时,本地运行的函数会接收触发器。 def main(blobin: func.InputStream, bl
我是一名优秀的程序员,十分优秀!