Bartłomiej 'furas' Burek
furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Python: Użycie pillow do stworzenia obrazku z miniaturkami w wierszach i kolumnach

Prosty skrypt, który bierze jako argument wzorzec typu path/*.jpg, ilośc wierszy, ilośc kolumn i tworzy siatkę z obrazkami (miniaturkami 100x100 pikseli)

Skrypt używa wzorca (zamiast nazwy katalogu) z funkcją glob.glob() aby pobrać nazwy plików, a następnie używa pillow aby wczytać obrazki, zmiejszyć je i wstawi na wynikowy obrazek jak miniturki w wierszach i kolumnach.

import sys
import glob
from PIL import Image

# for test only 
#sys.argv += ['images/dot-*.jpg', 2, 3]

# get arguments
pattern = sys.argv[1]
rows = int(sys.argv[2])
cols = int(sys.argv[3])

# get filenames
filenames = glob.glob(pattern)
#print(filenames)

# load images and resize them
images = [Image.open(name).resize((100, 100)) for name in filenames]

# output image for grid with thumbnails
new_image = Image.new('RGB', (cols*100, rows*100))

# paste thumbnails on output
i = 0
for y in range(rows):
    if i >= len(images):
        break
    y *= 100
    for x in range(cols):
        x *= 100
        img = images[i]
        new_image.paste(img, (x, y, x+100, y+100))
        print('paste:', x, y)
        i += 1

# save output
new_image.save('output.jpg')
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury