代码之家  ›  专栏  ›  技术社区  ›  Alex S.

如何在python中的PIL保存函数中指定要保存到哪个文件?

  •  0
  • Alex S.  · 技术社区  · 1 年前

    目标是将给定文件中的任何图像转换为png,然后将它们添加到新文件中。我似乎找不到使用PIL保存函数将图像保存到我想要的文件的方法:var.save()。

    这是代码

    from PIL import Image
    import sys
    import os
    
    file = sys.argv[1]
    output_file = sys.argv[2]
    
    if not os.path.exists(output_file):
        os.makedirs(output_file)
    
    i = 0
    for _ in os.listdir(file):
        img = Image.open(f'./{file}/{os.listdir(file)[i]}')
        img.save(f"{os.listdir(file)[i]}.png", "png")
        i +=1
    

    我搜索了这个,查看了整个堆栈溢出,但由于一些愚蠢的原因,我找不到一个函数或类似的东西来更改我保存它的位置。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Alfredo L'huissier    1 年前

    代码的问题似乎与保存函数中使用的文件路径有关。保存图像时,没有在路径中指定输出目录。这将导致图像保存在当前工作目录中,而不是所需的输出目录中。试试这样的方法:

    from PIL import Image
    import sys
    import os
    
    input_directory = sys.argv[1]
    output_directory = sys.argv[2]
    
    if not os.path.exists(output_directory):
        os.makedirs(output_directory)
    
    for filename in os.listdir(input_directory):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
            img = Image.open(os.path.join(input_directory, filename))
            # Create a new filename for the PNG version
            new_filename = os.path.splitext(filename)[0] + ".png"
            # Save the image in the output directory
            img.save(os.path.join(output_directory, new_filename), "PNG")