From 28a2f4d1d7e13b6e974c73910b6624d62dc11d73 Mon Sep 17 00:00:00 2001 From: rambros Date: Sat, 21 Mar 2026 16:22:39 +0530 Subject: [PATCH] fix stoat gifs --- src/stoat/migrate_message.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/stoat/migrate_message.py b/src/stoat/migrate_message.py index 1fc61e1..229e568 100644 --- a/src/stoat/migrate_message.py +++ b/src/stoat/migrate_message.py @@ -499,12 +499,14 @@ async def migrate_messages( frames = [] durations = [] # Create a RGBA canvas for disposal handling - canvas = Image.new('RGBA', img.size, (0,0,0,0)) for i in range(img.n_frames): img.seek(i) frame = img.convert('RGBA') - canvas.paste(frame, (0, 0), frame) - frames.append(canvas.convert('RGBA')) + # Use a fresh canvas for each frame to avoid ghosting/stacking + # For stickers, we want each GIF frame to be independent + current_frame = Image.new('RGBA', img.size, (0,0,0,0)) + current_frame.paste(frame, (0, 0)) + frames.append(current_frame) durations.append(img.info.get('duration', 100)) frames[0].save( gif_buf, format='GIF', save_all=True,