10

大家好,我需要一张一张打开一个文件夹中的图像,对图像进行一些处理并将它们保存回其他文件夹。我正在使用以下示例代码执行此操作。

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

有没有最好的方法来做到这一点?

谢谢!

4

2 回答 2

13

听起来你想要多线程。这是一个快速的版本,可以做到这一点。

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,有关更多示例和信息,请参阅该文档)

于 2013-10-24T20:04:09.747 回答
2

您可以使用 glob 一张一张地读取图像

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)    
于 2017-07-24T15:15:44.730 回答