前提・実現したいこと
for文を用いて繰り返し実行するプログラムを、実行ごとに別のファイルに格納したいです。
dataファイルの中にF1-1,F1-2,...,F1-12と実行結果ファイルを作成するようなイメージです。
下記ソースには目印のため”x”と書いています。
また、range関数に要素数を指定せずに実行させる方法や、別の関数があれば教えていただきたいです。
該当のソースコード
python
1 2from pathlib import Path 3from PIL import Image 4 5 6for i in range(6): 7 pair2=(pair[i]) 8 print(pair2) 9 10 11 for x in range(12): 12 img_dir1 = Path(pair2[0]) 13 img_dir2 = Path(pair2[1]) 14 output_dir = Path("fiw/data/F1-"+ "x") # 出力ディレクトリ 15 ⬆ 16 ここの部分 17 output_dir.mkdir(exist_ok=True) 18 19 x=x+1 20 21 ....... 22
追記・全ソースコード
python
1from pathlib import Path 2from PIL import Image 3 4 5for i in range(6): #F0001には6ファイルあったから6としているが、それぞれに合うようにしたい 6 pair2=(pair[i]) 7 print(pair2) 8 9 for x in range(11): 10 img_dir1 = Path(pair2[0]) # 左側の画像があるディレクトリ 11 img_dir2 = Path(pair2[1]) # 右側の画像があるディレクトリ 12 output_dir = Path(f"fiw/data/F1-{x}") # 出力ディレクトリ 13 output_dir.mkdir(exist_ok=True) 14 15 def concat_h(img1, img2, color="black"): 16 dst = Image.new("RGB", (img1.width + img2.width, max(img1.height, img2.height)), color) 17 dst.paste(img1, (0, 0)) 18 dst.paste(img2, (img1.width, 0)) #横に結合プログラム 19 20 return dst 21 22 23 24 for path1, path2 in itertools.product(img_dir1.iterdir(), img_dir2.iterdir()): 25 print(f"concat {path1} and {path2}") 26 img1 = Image.open(path1) 27 img2 = Image.open(path2) 28 29 dst = concat_h(img1, img2) 30 31 save_path = output_dir / f"{path1.stem}_{path2.stem}.jpg" 32 dst.save(save_path) 33 34 35 36 37 def concat_h(img2, img1, color="black"): 38 dst = Image.new("RGB", (img2.width + img1.width, max(img2.height, img1.height)), color) 39 dst.paste(img2, (0, 0)) 40 dst.paste(img1, (img2.width, 0)) 41 42 return dst 43 output_dir = Path(f"fiw/data/F1-{x+1}") # 出力ディレクトリ 44 output_dir.mkdir(exist_ok=True) 45 46 47 for path2, path1 in itertools.product(img_dir2.iterdir(), img_dir1.iterdir()): 48 print(f"concat {path2} and {path1}") 49 img1 = Image.open(path2) 50 img2 = Image.open(path1) 51 52 dst = concat_h(img1, img2) 53 54 save_path = output_dir / f"{path2.stem}_{path1.stem}.jpg" 55 dst.save(save_path) 56 x=x+1 57i=i+1 58
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/14 11:12
2020/08/14 11:57
2020/08/14 12:21