Introduce image request query parameter for filtering and selection (#2)
* Add selection ability using image query parameter the selections is the index of the list of images, where 0 is the first image. `os.listdir` is asumed to always sort the list the same. - if no selection is provided, take random image from image collection (like main) - if 1 selection is provided, return the nth image from collection - if 2 or more selections are provided, take random item from the selection and return the image at that index. * Handle bad selection input - Nondigit selections returns HTTP 401 - exclude indexes out of range (0--collection length)
This commit is contained in:
parent
90638fd72a
commit
b859fece88
1 changed files with 17 additions and 1 deletions
18
wsgi.py
18
wsgi.py
|
|
@ -21,7 +21,23 @@ def get_cropped_image(x, y, grey=False, retries=0):
|
||||||
"""crops a random image from collection"""
|
"""crops a random image from collection"""
|
||||||
if retries > 10:
|
if retries > 10:
|
||||||
return None
|
return None
|
||||||
im_src = random.choice(os.listdir("./images"))
|
options = os.listdir("./images")
|
||||||
|
try:
|
||||||
|
selection = list(
|
||||||
|
filter(
|
||||||
|
lambda i: i in range(0, len(options)),
|
||||||
|
map(int, request.args.getlist("image")),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
match len(selection):
|
||||||
|
case 0:
|
||||||
|
im_src = random.choice(options)
|
||||||
|
case 1:
|
||||||
|
im_src = options[selection[0]]
|
||||||
|
case _:
|
||||||
|
im_src = options[random.choice(selection)]
|
||||||
im = Image.open(f"images/{im_src}")
|
im = Image.open(f"images/{im_src}")
|
||||||
out = BytesIO()
|
out = BytesIO()
|
||||||
max_x, max_y = im.size
|
max_x, max_y = im.size
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue