Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure函数Python Blob映像_Python_Azure_Azure Functions_Azure Storage Blobs - Fatal编程技术网

Azure函数Python Blob映像

Azure函数Python Blob映像,python,azure,azure-functions,azure-storage-blobs,Python,Azure,Azure Functions,Azure Storage Blobs,我正在尝试加载两个图像,一个上传的图像(触发器),另一个来自硬编码的blob位置 def main(blobtrig: func.InputStream, medianimage: func.InputStream, blobout: func.Out[bytes]): logging.info(f"Python blob trigger function processed blob \n" f"Stuff: {blobtrig.__dict__}\n

我正在尝试加载两个图像,一个上传的图像(触发器),另一个来自硬编码的blob位置

def main(blobtrig: func.InputStream, medianimage: func.InputStream, blobout: func.Out[bytes]):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Stuff: {blobtrig.__dict__}\n")

    logging.info(f"Next Blob Name \n"
                 f"Stuff: {medianimage.__dict__}\n")

    input_image = blobtrig
    base_image = Image.open(input_image)

    med_image = medianimage
    logging.info(f"Med image read is {type(med_image)}")
    median_image = Image.open(med_image)
第一个Image.open(input_Image)可以工作,但第二个不行。我认为medianimage Inputstream没有指向正确的位置。我的functions.json是这样的

{"scriptFile": "__init__.py","bindings": [
{
  "name": "blobtrig",
  "type": "blobTrigger",
  "direction": "in",
  "path": "facility-model-image-data/{name}",
  "connection": "AzureWebJobsStorage"
},
{
  "type": "blob",
  "direction": "in",
  "name": "medianimage",
  "path": "facility-model-image-data/median.jpg",
  "connection": "AzureWebJobsStorage"
},
{
  "type": "blob",
  "direction": "out",
  "name": "blobout",
  "path": "processed-images/{rand-guid}.jpg",
  "connection": "AzureWebJobsStorage"
}],"disabled": false, "scriptFile": "__init__.py"}
但是python日志打印的文件都是相同的,即使medianimage应该指向一个完全不同的文件:

[02/02/2020 18:39:36] Stuff: {'_io': <_io.BytesIO object at 0x7f2cabdc0620>,
'_name': 'facility-model-image-data/test_gray.jpg', '_length': 152606,
'_uri': 'https://functionimageprocessor.blob.core.windows.net/facility-model-image-data/test_gray.jpg'}
[02/02/2020 18:39:36] 
[02/02/2020 18:39:36] Next Blob Name 
[02/02/2020 18:39:36] Stuff: {'_io': <_io.BytesIO object at 0x7f2cabdc0f10>,
'_name': 'facility-model-image-data/test_gray.jpg', '_length': 152606,
'_uri': 'https://functionimageprocessor.blob.core.windows.net/facility-model-image-data/test_gray.jpg'}

多年来一直在努力解决这个问题,所以任何帮助都将是巨大的!如果问题格式不是最好的(第一次在这里发布),也很抱歉。

这看起来差不多正确。不幸的是,我找不到任何在python中使用2种不同blobbbinding的示例。但是blobTrigger和blobBinding都是通过
func.InputStream
读取的。我的猜测是——这在python中不起作用(可能是一个bug?)。您可以在Github上提交问题

两个变通方法:

  • 如果median.jpg是相对静态的,那么您只需将其本地复制到函数存储并读取它,而无需进行blobbbinding
  • 如果不是-您可以使用Azure Storage SDK for python使用SDK而不是绑定从blob读取文件

  • 不得不走SDK路线,中位数不是很固定。谢谢你的建议!对于查找连接字符串的环境变量的任何人,请访问
    connect\u str=os.getenv('azurewebjobstorage')
    [02/02/2020 18:39:36] Stack:   File "/usr/lib/azure-functions-core-tools/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py", line 312, in _handle__invocation_request
    [02/02/2020 18:39:36]     self.__run_sync_func, invocation_id, fi.func, args)
    [02/02/2020 18:39:36]   File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    [02/02/2020 18:39:36]     result = self.fn(*self.args, **self.kwargs)
    [02/02/2020 18:39:36]   File "/usr/lib/azure-functions-core-tools/workers/python/3.7/LINUX/X64/azure_functions_worker/dispatcher.py", line 431, in __run_sync_func
    [02/02/2020 18:39:36]     return func(**params)
    [02/02/2020 18:39:36]   File "/home/peter/Documents/Python/dataset-processing/functions/imageuploadtrigger/__init__.py", line 35, in main
    [02/02/2020 18:39:36]     median_image = Image.open(med_image)#Image.frombytes('RGBA', (636,795), med_image, 'raw')