Переделал работу с гифками
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))
|
||||
|
||||
new_size = (512, 512)
|
||||
resized_image = image.resize(new_size)
|
||||
|
||||
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}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue