如何将处理后的图像保存到python文件夹中的其他文件夹中?

时间:2018-11-11 15:16:37

标签: python image-processing save-image

我的代码看起来像是通过“图像”文件夹,然后是子文件夹并处理所有这些图像。

我现在需要将这些图像保存到并行目录,即名为“ Processed Images”的文件夹(与“ Images”文件夹位于同一目录),然后再保存至该文件夹内的子文件夹-这些子文件夹的名称与“图片”中的子文件夹-图片应保存为与该图片来自的子文件夹相同的名称。

我可以将图像保存到“处理的图像”中,但不能保存在其中的子文件夹中。

path = ("...\\Images")

for dirName, subdirList, fileList, in os.walk(path):

    for file in fileList:

        full_file_path = os.path.join(dirName, file)

        if file.endswith((".jpg")):

        image_file = Image.open(full_file_path)

        image_file = image_file.convert('L')

        image_file = PIL.ImageOps.invert(image_file)

        image_file = image_file.resize((28, 28))

        new_filename = file.split('.jpg')[0] + 'new.png'

        path2 = ("...\\Processed Images")

        image_file.save(os.path.join(path2, new_filename))

    else: continue

2 个答案:

答案 0 :(得分:0)

您可以使用函数os.mkdir()创建一个新文件夹。 dirName返回的os.walk()为您提供了当前的文件夹路径,因此您只需提取所需路径的一部分,将其追加到...\\Processed Images并根据需要创建新文件夹。

请确保对输入文件和输出文件使用两个单独的文件夹树。否则,os.walk()将找到包含输出图像的新目录,并继续对其进行迭代。

答案 1 :(得分:0)

我认为您可以使用pathlib来简化此代码。我不确定基本路径中的三个点(我认为它们应该是两个),但是它们可能对您有用。

    from pathlib import Path
    path = Path("...\\Images")
    path2 = Path("...\\Processed Images")
    path2.mkdir(exist_ok=True)

    for jpg_file in p.glob('**/*.jpg'):
        full_file_path = str(jpg_file)
        image_file = Image.open(full_file_path)
        image_file = image_file.convert('L')
        image_file = PIL.ImageOps.invert(image_file)
        image_file = image_file.resize((28, 28))

        new_filename = jpg_file.stem + 'new.png'
        image_file.save(str(path2 / new_filename))