質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

660閲覧

フォルダ内の画像を3分割して別のフォルダに保存したい

odadadada

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/01/04 03:54

前提・実現したいこと

フォルダ内のすべての画像を3分割して別のフォルダに保存したいです。
フォルダに10枚の画像があるなら、30枚の画像が別のフォルダに保存されているようにしたいです。

元のフォルダ名:pictures
フォルダの中身:「(日付).jpg」という名の画像が20枚程度
新しいフォルダ名:pictures_divided

発生している問題・エラーメッセージ

FileNotFoundError: [Errno 2] No such file or directory: 'pictures_divided\pictures\0101_1.JPG'

該当のソースコード

Python

1from PIL import Image 2import glob 3import os 4 5#指定されたディレクトリ内の画像を三分割して新しいフォルダに保存する関数 6def divide3(dir,new_dir): 7 path_list=glob.glob(dir+'/*') #指定されたディレクトリ内のすべてのファイルを取得 8 name_list=[] 9 ext_list=[] 10 11 os.makedirs(new_dir, exist_ok=True) 12 13 for i in path_list: 14 im = Image.open(i) 15 name,ext = os.path.splitext(i) 16 name_list.append(name) 17 ext_list.append(ext) 18 19 im_crop_1=im.crop((500,600,4000,1300)) 20 im_crop_2=im.crop((500,1300,4000,2000)) 21 im_crop_3=im.crop((500,2000,4000,2700)) 22 23 im_crop_1.save(os.path.join(new_dir,name+'_1'+ext)) 24 im_crop_2.save(os.path.join(new_dir,name+'_2'+ext)) 25 im_crop_3.save(os.path.join(new_dir,name+'_3'+ext)) 26 27 return 28 29divide3("pictures","pictures_divided")

試したこと

以下のソースコードで、「0101.jpg」という画像1枚から「0101_1.jpg」「0101_2.jpg」「0101_3.jpg」という画像を3枚作り、「pictures_divided」というフォルダに保存できました。

Python

1from PIL import Image 2import os 3 4def divide3(picture,new_dir): 5 6 os.makedirs(new_dir, exist_ok=True) 7 8 name_list=[] 9 ext_list=[] 10 im = Image.open(picture) 11 name,ext = os.path.splitext(picture) 12 name_list.append(name) 13 ext_list.append(ext) 14 15 im_crop_1=im.crop((500,600,4000,1300)) 16 im_crop_1.save(os.path.join(new_dir,name+'_1'+ext)) 17 18 im_crop_2=im.crop((500,1300,4000,2000)) 19 im_crop_2.save(os.path.join(new_dir,name+'_2'+ext)) 20 21 im_crop_3=im.crop((500,2000,4000,2700)) 22 im_crop_3.save(os.path.join(new_dir,name+'_3'+ext)) 23 24 25 return 26 27divide3('0101.jpg','pictures_divided')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1path_list=glob.glob(dir+'/*')

でpath_listに入るのは、['picture/0101.jpg', 'picture/0102.jpg', 'picture/0103.jpg']のようなリストです。

これを格納したければ、pictureを取り除くか、あるいはpictures_divided\pictures\というディレクトリを事前に作成しておくの、どちらかのことをやっておく必要があります。

投稿2022/01/04 06:14

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問