2013-10-24 2 views
8

हाय सब मुझे एक फ़ोल्डर से छवियों को एक-एक करके छवियों पर कुछ प्रसंस्करण करने और उन्हें अन्य फ़ोल्डर में सहेजने की आवश्यकता है। मैं निम्नलिखित नमूना कोड का उपयोग कर ऐसा कर रहा हूँ।पायथन का उपयोग कर एक फ़ोल्डर से एक छवियों को खोलें?

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

क्या ऐसा करने का कोई सबसे अच्छा तरीका है?

धन्यवाद!

+1

यह ठीक लगता है एक दूसरे के बाद एक प्रसंस्करण, स्मृति को लोड से परहेज। –

+4

बस एफवाईआई, पायथन टिप्पणी चरित्र '#' है, '%' नहीं (लाटेक्स प्रोग्रामर?)। इससे आपको भविष्य में कुछ परेशानी बचा सकती है। :) –

+1

आप वास्तव में क्या करने की कोशिश कर रहे हैं? कृपया अपने प्रश्न में थोड़ा और विवरण दें - जितना संभव हो सके अपना प्रश्न बनाकर हमें आपकी सहायता करने में हमारी सहायता करें। –

उत्तर

12

लगता है जैसे आप मल्टीथ्रेडिंग चाहते हैं। यहां एक त्वरित संशोधन है जो ऐसा करेगा।

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) 

(संपादित करें: Thread के बजाय multiprocessing उपयोग करते हैं, और उदाहरण और जानकारी के लिए कि दस्तावेज़ नहीं देख)

2

आप छवियों को पढ़ने के लिए ग्लोब उपयोग कर सकते हैं एक के बाद एक

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)  
संबंधित मुद्दे