2013-10-24 62 views
8

大家好,我需要從一個文件夾逐個打開圖像對圖像做一些處理並將它們保存回其他文件夾。我正在使用以下示例代碼執行此操作。使用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") 

有沒有最好的方法來做到這一點?

謝謝!

+1

它似乎確定與處理一個又一個,避免內存負載。 –

+4

僅供參考,Python註釋字符是'#',而不是'%'(LaTeX程序員?)。這可能會爲您節省一些麻煩。 :) –

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

(編輯:使用multiprocessing,而不是Thread,看到文檔的更多示例和信息)一個由

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)  
相關問題