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

问题描述 投票:0回答: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

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

python image file operating-system python-imaging-library
1个回答
0
投票

您的代码问题似乎与保存功能中使用的文件路径有关。保存图像时,您没有在路径中指定输出目录。这会导致图像保存在当前工作目录中,而不是所需的输出目录中。尝试这样的事情:

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")
© www.soinside.com 2019 - 2024. All rights reserved.