Переделал работу с гифками

This commit is contained in:
urec56 2024-06-14 17:51:34 +05:00
parent 2e4abfea12
commit cac4c2897c

View file

@ -27,10 +27,29 @@ async def upload_avatar(file: UploadFile):
image = Image.open(BytesIO(content)) image = Image.open(BytesIO(content))
new_size = (512, 512) new_size = (512, 512)
resized_image = image.resize(new_size)
image_url = f"static/images/avatars/{name}_avatar.{image.format.lower()}" image_url = f"static/images/avatars/{name}_avatar.{image.format.lower()}"
resized_image.save(image_url, save_all=True) if image.format.lower() in {"gif"} else resized_image.save(image_url) if image.format.lower() == "gif":
frames = []
try:
while True:
frames.append(image.copy())
image.seek(image.tell() + 1)
except EOFError:
pass
resized_frames = [frame.resize(new_size) for frame in frames]
resized_gif = resized_frames[0]
resized_gif.save(
image_url,
save_all=True,
append_images=resized_frames[1:],
optimize=True,
duration=image.info["duration"],
loop=image.info["loop"]
)
else:
resized_image = image.resize(new_size)
resized_image.save(image_url)
return {"image_url": image_url} return {"image_url": image_url}