Skip to content

Instantly share code, notes, and snippets.

@sjwaight
Last active October 28, 2020 23:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sjwaight/0a51202519a6fd1bea0483257f2cb227 to your computer and use it in GitHub Desktop.
Save sjwaight/0a51202519a6fd1bea0483257f2cb227 to your computer and use it in GitHub Desktop.
Python Azure Function sample showing how to using Input and Output binding with Azure Blob Storage and doing local file manipulation.
from io import BytesIO
from logging import FileHandler
import logging
import azure.functions as func
from PIL import Image
def main(msg: func.QueueMessage, inputblob: func.InputStream,
outputblob: func.Out[func.InputStream]) -> None:
blob_source_raw_name = msg.get_body().decode('utf-8')
logging.info('Python queue trigger function processed a queue item: %s', blob_source_raw_name)
# thumbnail filename
local_file_name_thumb = blob_source_raw_name[:-4] + "_thumb.jpg"
#####
# Download file from Azure Blob Storage
#####
with open(blob_source_raw_name,"w+b") as local_blob:
local_blob.write(inputblob.read())
#####
# Use PIL to create a thumbnail
#####
new_size = 200,200
im = Image.open(local_blob.name)
im.thumbnail(new_size)
im.save(local_file_name_thumb, quality=95)
# write the stream to the output file in blob storage
new_thumbfile = open(local_file_name_thumb,"rb")
outputblob.set(new_thumbfile.read())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment