Last active
October 28, 2020 23:36
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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