Comment puis-je obtenir la hauteur la plus basse de toutes les hauteurs et aussi la largeur la plus basse de toutes les largeurs étant donné que j'ai environ 50 000 images?
[jalal@goku images]$ identify -format '%w %h' 72028059_11.jpg
600 431
Cette commande ne donne que w et h d'une image.
Je l'ai obtenu de IRC canal Linux mais parce que j'ai 50k images, cela prend une éternité pour produire des résultats:
[jalal@goku images]$ find -type f -name \*.jpg -exec identify -format '%w %h %d/%f\n' {} \; | sort -n -k2
Je n'ai pas de statistiques comparatives, mais j'ai des raisons de croire que le script ci-dessous offre une option relativement bonne, car:
.open
#!/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)
get_minsize.py
Exécutez-le avec le répertoire d'images comme argument:
python3 /path/to/get_maxsize.py /path/to/imagefolder
Sortie comme:
minwidth (520, '/home/jacob/Desktop/caravan/IMG_20171007_104917.jpg')
minheight (674, '/home/jacob/Desktop/caravan/butsen1.jpg')
Le script suppose que le dossier d'images est un répertoire "plat" avec (uniquement) des images. Si ce n'est pas le cas, quelques lignes doivent être ajoutées, il suffit de le mentionner.