使用PIL保存时修改路径名

时间:2017-03-07 10:53:17

标签: python python-2.7 python-imaging-library

我从图像中提取RGB通道并将其保存为灰度png文件,但是我无法保存它们。这是我的代码:

listing = os.listdir(path1)    
for f in listing:
    im = Image.open(path1 + f)
    red, green, blue = im.split()
    red = red.convert('LA')
    green = green.convert('LA')
    blue = blue.convert('LA')
    red.save(path2 + f + 'r', 'png')
    green.save(path2 + f + 'g', 'png')
    blue.save(path2 + f + 'b','png')

其中path1path2分别是图像文件夹和保存目的地。我想要做的是保存img.png的颜色通道的b& w版本 imgr.pngimgg.pngimgb.png,但我得到的代码是img.pngrimg.pnggimg.pngb。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先需要从扩展名中拆分文件名。

import os
filename = path2 + f # Consider using os.path.join(path2, f) instead
root, ext = os.path.splitext(filename)

然后你可以再次正确地组合它们:

filename = root + "r" + ext

现在filename将是imgr.png而不是img.pngr

答案 1 :(得分:1)

您可以按照以下方式执行此操作:

import os

listing = os.listdir(path1)    

for f in listing:
    im = Image.open(os.path.join(path1, f))

    red, green, blue = im.split()
    red = red.convert('LA')
    green = green.convert('LA')
    blue = blue.convert('LA')

    file_name, file_ext = os.path.splitext(f)

    red.save(os.path.join(path2, "{}r.png".format(file_name))
    green.save(os.path.join(path2, "{}g.png".format(file_name))
    blue.save(os.path.join(path2, "{}b.png".format(file_name))

我建议您在处理路径和文件名时使用os.path.split()os.path.join()函数。