2017-03-07 15 views
1

イメージからRGBチャネルを抽出してグレースケールpngファイルとして保存していますが、保存に問題があります。PILで保存するときにパス名を変更する

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は、画像フォルダであり、それぞれの目的地を救う:ここに私のコードです。私は何をしたい imgr.pngimgg.pngimgb.pngimg.pngのカラーチャンネルのB &ワットのバージョンを保存することですが、私はこのコードを取得することはimg.pngrimg.pnggimg.pngbです。どんな助けもありがとう。

+0

これはイメージとは関係ありません。パスの一部を変更する方法です。問題のすべてを取り除き、おそらく1行または2行のコードに集中してください。 [mcve]の作成方法を参照してください。 –

答えて

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()機能を利用することをお勧めします。

1

最初にファイル名を拡張子から分割する必要があります。

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

次に、あなたがやって再びそれらを正しく組み合わせることができます。

filename = root + "r" + ext 

は今 filenameimgr.pngの代わり img.pngrだろう。

関連する問題