├── requirements.txt ├── minion.png ├── minion_facebooked.png ├── README.md └── facebookify.py /requirements.txt: -------------------------------------------------------------------------------- 1 | Pillow==2.8.2 2 | -------------------------------------------------------------------------------- /minion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NickBeeuwsaert/facebookify/HEAD/minion.png -------------------------------------------------------------------------------- /minion_facebooked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NickBeeuwsaert/facebookify/HEAD/minion_facebooked.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Facebookify 2 | =========== 3 | 4 | What's this do? 5 | --------------- 6 | It repeatedly compresses a jpeg until it looks like the pictures your grandma has been sharing on Facebook 7 | 8 | Why? 9 | ---- 10 | Why not? 11 | 12 | Usage 13 | ----- 14 | 15 | ``` 16 | ./facebookify --iterations 2048 --quality 1 input.png output.png 17 | ``` 18 | 19 | Example: 20 | -------- 21 | Before: 22 | 23 | ![Minions 4 lyfe](minion.png) 24 | 25 | After: 26 | 27 | ![This one looks way better than the original, esp. the sharpen](minion_facebooked.png) 28 | 29 | -------------------------------------------------------------------------------- /facebookify.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse 3 | from PIL import Image, ImageFilter 4 | import tempfile 5 | import io 6 | 7 | """ 8 | To be honest, I'm unsure what makes facebook images look so bad 9 | 10 | I initially thought it was because it was getting saved and reposted so much, 11 | and the JPEG compression was making it look bad. 12 | But I get more realistic results just running a sharpen filter on the image 13 | Might be a combination of both, IDK 14 | """ 15 | 16 | parser = argparse.ArgumentParser(description="Makes a image look like it does on facebook") 17 | parser.add_argument('input', metavar='INPUT', help="input image") 18 | parser.add_argument('output', metavar='OUTPUT', help="output image") 19 | parser.add_argument('--iterations', '-i', metavar='ITERATIONS', type=int, default=5, help="how many iterations to run") 20 | parser.add_argument('--sharpen-count', '-s', metavar='ITERATIONS', type=int, default=5, help="how many times to run a sharpen filter over the image") 21 | parser.add_argument('--quality', '-q', metavar='QUALITY', type=int, default=10, help="default quality") 22 | args = parser.parse_args() 23 | 24 | im = Image.open(args.input) 25 | temp = io.BytesIO() 26 | 27 | 28 | for i in range(args.iterations): 29 | for i in range(args.sharpen_count): 30 | im = im.filter(ImageFilter.SHARPEN) 31 | im.save(temp, "JPEG", quality=args.quality) 32 | im = Image.open(temp) 33 | 34 | im.save(args.output) 35 | --------------------------------------------------------------------------------