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.

    • agitated_judge@sh.itjust.works
      link
      fedilink
      arrow-up
      7
      ·
      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.

    • cowfodder@unilem.org
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      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.