Obtendo a imagem com altura e largura mínima
Não tenho estatísticas de comparação, mas tenho motivos para acreditar que o script abaixo oferece uma opção relativamente boa, pois:
- O PIL do python não carrega a imagem na memória ao chamar
.open
- O script em si não armazena a lista de todos os arquivos, ele simplesmente procura por arquivo se o próximo tiver uma altura ou largura menor.
O script
#!/usr/bin/env python3
from PIL import Image
import os
import sys
path = sys.argv[1]
# set an initial value which no image will meet
minw = 10000000
minh = 10000000
for image in os.listdir(path):
# get the image height & width
image_location = os.path.join(path, image)
im = Image.open(image_location)
data = im.size
# if the width is lower than the last image, we have a new "winner"
w = data[0]
if w < minw:
newminw = w, image_location
minw = w
# if the height is lower than the last image, we have a new "winner"
h = data[1]
if h < minh:
newminh = h, image_location
minh = h
# finally, print the values and corresponding files
print("minwidth", newminw)
print("minheight", newminh)
Como usar
- Copie o script em um arquivo vazio, salve-o como
get_minsize.py
-
Execute-o com o diretório de imagens como argumento:
python3 /path/to/get_maxsize.py /path/to/imagefolder
Saída como:
minwidth (520, '/home/jacob/Desktop/caravan/IMG_20171007_104917.jpg')
minheight (674, '/home/jacob/Desktop/caravan/butsen1.jpg')
NB
O script assume que a pasta de imagens é um diretório "plano" com (apenas) imagens. Se esse não for o caso, algumas linhas precisam ser adicionadas, apenas mencione.