2013-10-24 17 views
8

Hi alles, was ich brauche, um Bilder aus einem Ordner einzeln zu öffnen, einige Bilder zu bearbeiten und sie in einem anderen Ordner zu speichern. Ich mache das mit folgendem Beispielcode.Öffnen Sie Bilder aus einem Ordner einzeln mit Python?

path1 = path of folder of images  
path2 = path of folder to save images  

listing = os.listdir(path1)  
for file in listing: 
    im = Image.open(path1 + file)  
    im.resize((50,50))    % need to do some more processing here    
    im.save(path2 + file, "JPEG") 

Gibt es den besten Weg, dies zu tun?

Danke!

+1

Es scheint in Ordnung, lesen Verarbeitung nacheinander, Vermeidung der Belastung in den Speicher. –

+4

Just FYI, das Python Kommentarzeichen ist '#', nicht '%' (LaTeX Programmierer?). Das könnte Ihnen in der Zukunft einige Probleme ersparen. :) –

+1

Was versuchst du eigentlich zu tun? Bitte fügen Sie ein wenig mehr Beschreibung in Ihre Frage ein - helfen Sie uns, indem Sie Ihre Frage so vollständig wie möglich stellen. –

Antwort

12

Klingt wie Sie wollen Multithreading. Hier ist eine schnelle rev, die das tun wird.

from multiprocessing import Pool 
import os 

path1 = "some/path" 
path2 = "some/other/path" 

listing = os.listdir(path1)  

p = Pool(5) # process 5 images simultaneously 

def process_fpath(path): 
    im = Image.open(path1 + path)  
    im.resize((50,50))    # need to do some more processing here    
    im.save(os.path.join(path2,path), "JPEG") 

p.map(process_fpath, listing) 

(edit: verwenden multiprocessing statt Thread finden, dass doc für weitere Beispiele und Informationen)

2

Sie glob können die Bilder einzeln

import glob 
from PIL import Image 


images=glob.glob("*.jpg") 
for image in images: 
    img = Image.open(image) 
    img1 = img.resize(50,50) 
    img1.save("newfolder\\"+image)  
Verwandte Themen