From ba4050d65eeaf244693de6c9163e695e2201a828 Mon Sep 17 00:00:00 2001 From: urec56 Date: Sun, 10 Mar 2024 13:23:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D0=BA=D0=B5=20=D0=B0=D0=B2=D0=B0=D1=82=D0=B0=D1=80?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B5=D1=89=D1=91=20=D0=B2=D0=BE=D0=B7=D0=B2?= =?UTF-8?q?=D1=80=D0=B0=D1=89=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D1=81=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=BD=D0=B8=D0=B9=20hex=20=D0=B8=D0=B7=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.py | 10 +++++++++- requirements.txt | 3 +-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/main.py b/app/main.py index 12d2d69..ffa528a 100644 --- a/app/main.py +++ b/app/main.py @@ -4,12 +4,19 @@ import string import os from io import BytesIO +import numpy as np from PIL import Image from fastapi import FastAPI, UploadFile from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware +def find_average_hex_color(image: Image.Image): + np_image = np.array(image) + average_color = np.mean(np_image, axis=(0, 1)) + average_color_hex = '#{:02x}{:02x}{:02x}'.format(int(average_color[0]), int(average_color[1]), int(average_color[2])) + return average_color_hex + def generate_random_string(length=16): """Генерирует случайную строку заданной длины.""" @@ -47,11 +54,12 @@ async def upload_avatar(file: UploadFile): image = Image.open(BytesIO(content)) new_size = (512, 512) resized_image = image.resize(new_size) + average_color_hex = find_average_hex_color(resized_image) name = generate_random_string() image_url = f'static/images/avatars/{name}_avatar.png' with open('app/' + image_url, 'wb+') as file_object: resized_image.save(file_object, format="PNG") - return {'image_url': image_url} + return {'image_url': image_url, 'hex_color': average_color_hex} @app.post('/upload_image', response_model=dict[str, str]) diff --git a/requirements.txt b/requirements.txt index 9db9295..5c2798e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -47,6 +47,7 @@ mccabe==0.7.0 multidict==6.0.4 mypy-extensions==1.0.0 nodeenv==1.8.0 +numpy==1.26.4 orjson==3.9.12 packaging==23.2 passlib==1.7.4 @@ -98,5 +99,3 @@ WTForms==3.1.2 yarl==1.9.4 zope.event==5.0 zope.interface==6.1 -pywin32==305; platform_system=="Windows" -bcrypt==4.1.2; platform_system=="Windows"