Переделал работу с гифками
This commit is contained in:
parent
2e4abfea12
commit
cac4c2897c
1 changed files with 22 additions and 3 deletions
25
app/main.py
25
app/main.py
|
@ -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}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue