2013-10-24 13 views
8

こんにちは、フォルダから画像を1つずつ開いて画像を処理し、別のフォルダに保存する必要があります。私は次のサンプルコードを使用してこれをやっています。pythonを使用してフォルダから画像を1つずつ開きますか?

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

これは、とOKらしいですメモリへの負荷を避けて次々と処理します。 –

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

(編集:より多くの例や情報のためのそのドキュメントを参照、代わりにThreadmultiprocessingを使用)

2

あなたは画像を読み取るためにグロブを使用することができます一つは、1

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)  
関連する問題