summaryrefslogtreecommitdiffstats
path: root/common/screensaver/mirror.py
blob: 5c7c925b6c5e2d5823884aa1e771dd9b4562d0c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# coding:utf-8

# !/usr/bin/env python3
from PIL import Image, ImageOps

liste = """52272434262_08161ca956_k.jpg  52273667914_c67e59883f_k.jpg  52273896340_a5d7a5b569_k.jpg  52282000756_4350b904a6_o.png  52439772940_0a908517fd_k.jpg
52272434422_6e763311e0_k.jpg  52273667939_00a7a82d85_k.jpg  52273896530_32364a5ae9_k.jpg  52282013983_431b84da93_o.png  52439843783_6b199f85d8_k.jpg
52273406946_9270259682_k.jpg  52273668079_69d33c4f5d_k.jpg  52281021382_92b4cfc3ce_o.png  52282014418_6df2d3ddbd_o.png  52439844463_fed718866f_k.jpg
52273407231_50a6d90bce_k.jpg  52273668119_6f6b12e472_k.jpg  52281972878_1efc0e0f77_o.png  52439703339_6668e4e7b6_h.jpg
"""
i = 1
target = (1920, 1080)
band = Image.new("RGB",(1920, 2))
y_split = 730
for name in liste.split():
    
    im = Image.open(name)
    #be sure that the width is 1920px
    size = (1920, int(im.height * 1920 / im.width))
    im = im.resize(size)
    im = ImageOps.fit(im, target, centering=(0.5,1))
    # select the upper part
    box = (0, 0, 1920, y_split)
    # define the bottom part
    bottom_box = (0, y_split + 2, 1920, 1080)
    bottom_size = (1920, 1078-y_split)
    # mirrot the upper part
    bottom = ImageOps.flip(im.crop(box))
    # keep only a part of the mirrored part
    bottom = ImageOps.fit(bottom, bottom_size, centering=(0.5,0))
    # fade to black from top to bottom of the mirrored part
    pixels = bottom.load()
    gamma = 1.4
    for y in range(bottom.height):
        darker = pow((bottom.height -y)/bottom.height, gamma)
        for x in range(bottom.width):
            pixels[x,y] = (int(pixels[x, y][0] * darker), int(pixels[x, y][1] * darker), int(pixels[x, y][2] * darker),)
    # join the 2 parts
    im.paste(bottom, bottom_box)
    # add the band
    im.paste(band, (0, y_split))
    # export the result
    with open(f"Screensaver-{i:02}.jpg",'w') as new_im:
        im.save(new_im)
    i += 1