this post was submitted on 14 Sep 2023
9 points (100.0% liked)

Python

6413 readers
3 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS
 

I am assisting in making a wiki for an old game, and we ripped the avatar GIFs from the games shop and want to have a catalog of them. What I need to do is to crop all the borders which are identical from 3,170 GIFs and maybe make background transparent.

I haven't used python in years, but I managed to cobble up something that almost works as a single image test, only issue is that it crops and outputs only the first frame:

from PIL import Image

if __name__ == "__main__":
    input_loc = "AvatarShopImages/80001.gif"
    output_loc = "Output/80001.gif"
    im = Image.open(input_loc)
    im = im.crop((4, 4, 94, 94))
    im.save(output_loc)

If it looks weird, it is because I copy/pasted some code and edited a lot out of it.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 1 year ago (1 children)

@Shady_Shiroe

Open GIMP
Go to "File" > "Open" and select your GIF.
Select the "Crop Tool" from the toolbox.
Adjust the crop area to your desired size.
Click the "Crop" button.
Go to "File" > "Export As" and choose GIF as the format. Save your cropped GIF.

FFmpeg
Use the following command to crop the GIF, replacing input.gif with your GIF's filename and specifying the crop dimensions:

ffmpeg -i input.gif -vf "crop=w:h:x:y" output.gif

[–] [email protected] 3 points 1 year ago (2 children)

Let me clarify, there are 3 THOUSAND GIFs that need to be cropped

[–] [email protected] 7 points 1 year ago

for i in $( ls *.gif ); do fmpeg -i $i -vf "crop=w:h:x:y" cropped_$i; done

This runs on Linux/Mac or on WSL on windows Make sure there are no spaces in the filenames.

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago)

If they're all the same size and need cropped to the same size you could drop them all in one folder and run the ffmpeg command with *.gif. That should do all of them.

You'd have to find a way to automate the output though.