2013-10-24 9 views
8

Herkese selam Bir görüntüyü birer birer birer birer birer birer resim üzerinde işlemek ve başka bir klasöre kaydetmem gerekiyor. Bunu aşağıdaki örnek kodu kullanarak yapıyorum.Python'u kullanarak görüntüleri bir klasörden birer birer açın.

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") 

Bunu yapmanın en iyi yolu var mı?

Teşekkürler!

+1

O ok görünüyor birbiri ardına işleyerek, belleğe yükü engeller. –

+4

Sadece FYI, Python yorum karakteri '' 'değil'% 'değil (LaTeX programcı?). Bu gelecekte size biraz sorun çıkarabilir. :) –

+1

Aslında ne yapmaya çalışıyorsun? Lütfen sorunuza biraz daha açıklık getirin. Sorunuzu mümkün olduğunca eksiksiz hale getirerek size yardımcı olmamıza yardımcı olun. –

cevap

12

Çok iş parçacıklı olmasını istediğiniz gibi görünüyor. İşte bunu yapacak hızlı bir rev.

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) 

(düzenleme: Daha fazla örnek ve bilgiler için bu belgeye bakın yerine Thread ait multiprocessing kullanın)

2

görüntüleri okumak için topak kullanabilirsiniz biri birer

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)  
İlgili konular