Font-To-Sketch / code /collage.py
bkhmsi's picture
now supports any font
f265950
raw
history blame
No virus
1.89 kB
import os
import imageio
import numpy as np
from glob import glob
from tqdm import tqdm
from PIL import Image
if __name__ == "__main__":
path = "/Users/bkhmsi/Desktop/Animal-Words/*.gif"
save_path = os.path.join(os.path.dirname(path), "collage_loop_25_3.gif")
width, height = 250, 250
# width, height = 100, 100
nx, ny = 5, 5
n_frames = 67
collage = np.ones((n_frames*2, width*nx, height*ny)).astype(np.uint8)*255
filenames = [p for p in glob(path) if os.path.basename(p)[:-4] not in ["palestine", "amin", "collage", "collage_loop_25", "collage_loop_25_2", "collage_loop_25_3a", "collage_loop_7", "collage_1d"]]
print(f"> {len(filenames)} Files Found")
f_filenames = filenames
filter = ["horse.gif", "giraffe.gif", "duck.gif", "turtle.gif", "camel.gif", "octopus.gif", "shark.gif"]
# f_filenames = []
# for file in filenames:
# basename = os.path.basename(file)
# if basename in filter:
# f_filenames += [file]
assert nx*ny <= len(f_filenames)
for i in range(nx):
for j in tqdm(range(ny)):
image = Image.open(f_filenames[i*ny+j])
assert image.is_animated
idx = 0
for frame_idx in range(n_frames):
image.seek(frame_idx)
frame = image.convert('L').copy()
frame = frame.resize((300,300))
collage[idx, i*width:(i+1)*width,j*height:(j+1)*height] = np.asarray(frame)[25:275, 25:275]
idx += 1
for frame_idx in reversed(range(n_frames)):
image.seek(frame_idx)
frame = image.convert('L').copy()
frame = frame.resize((300,300))
collage[idx, i*width:(i+1)*width,j*height:(j+1)*height] = np.asarray(frame)[25:275, 25:275]
idx += 1
imageio.mimsave(save_path, collage)