2013-08-08 2 views
-2

Je suis à la recherche d'une bibliothèque Python capable d'extraire (méta) des données à partir d'images. Je suis particulièrement intéressé par l'obtention des dimensions d'une image. Anybode peut-il recommander une bonne bibliothèque? Cas d'utilisation: J'essaie de supprimer par lots des images (que j'utilise en utilisant os.remove) dans un seul dossier dont la taille est inférieure à une certaine taille (1280x800 pixels).Récupération des informations de base sur les images

+1

qu'avez-vous essayé? – jterrace

+0

Parlez-vous de la zone? ou chaque dimension – sihrc

+0

duplication possible de [Obtenir la taille de l'image sans le télécharger en Python] (http://stackoverflow.com/questions/7460218/get-image-size-wihout-downloading-it-in-python) –

Répondre

1

Voici la structure générale. Google aide.

from PIL import Image 
import os 
for _image in os.listdir("image\folder"): 
    img = Image.open(_image) 
    height, width = img.size 
    if height < .... or width < .....: 
     os.remove(os.path.join("image\folder",_image) 
0

Voici un court exemple vous pouvez probablement utiliser pour ce genre de chose, vous auriez à installer PIL (http://www.pythonware.com/products/pil/) ..

from PIL import Image 
import glob 
import os 

# Get images that end in .jpg 
for image_file in glob.glob('*.jpg'): 
    img = Image.open(image_file) 
    # get the image's width and height in pixels 
    width, height = img.size 
    if width < 1280 and height < 800: 
     os.unlink(image_file) 

Note: si PIL ne supporte pas les types d'images que vous Vous pouvez regarder Imagemagick (qui a une API python) - la commande de fichier unix vous donnera également cette information pour certains fichiers image.

0

Je pense que ce serait quelque chose comme:

import os 
from PIL import Image #need to install python-imaging 

path = "." #current dir 
files = [ i for i in os.listdir(path) if os.path.isfile(os.path.join(path,i)) ] 
print "Files found in the current dir:"+ ",".join(files) 
for f in files: 
     try: 
      im=Image.open(f) 
      i,j = im.size 
      print "Image " + f + " size("+str(i)+","+str(j)+")" 
       if i < 1280 and j < 800: 
        print "Deleting "+f 
        os.remove(f) 
     except IOError: 
      print "The file " +f + " isn't an image" 
Questions connexes