2017-12-13 23 views
2

現在、私は、C:\\Users\\xie\\Desktop\\tiff\\Bmpのアドレスの下にあるフォルダ内のすべての画像を切り抜き、同じフォルダに再保存しようとしています。以下は私が実験しようとしているコードです。どちらもエラーなく実行されますが、何もしません。また、プラットフォームとしてのウィンドウを使用しています。Python PILフォルダ内のすべての画像を切り抜く

コード1:

from PIL import Image 
import os.path, sys 

path = "C:\\Users\\xie\\Desktop\\tiff\\Bmp" 
dirs = os.listdir(path) 

def crop(): 
    for item in dirs: 
     if os.path.isfile(path+item): 
      im = Image.open(path+item) 
      f, e = os.path.splitext(path+item) 
      imCrop = im.crop(30, 10, 1024, 1004) 
      imCrop.save(f + 'Cropped.bmp', "BMP", quality=100) 

crop() 

コード2:

for f in os.listdir("C:\\Users\\xie\\Desktop\\tiff\\Bmp"): 
    for f in ("C:\\Users\\xie\\Desktop\\tiff\\Bmp"): 
     if f.endswith('.bmp'): 
      print (f, end=" ") 
      i = Image.open(f) 
      area = (30, 10, 1024, 1004) 
      cropped_i = i.crop(area) 
      cropped_i.show() 
      cropped_i.save('Cropped{}.bmp', "BMP", quality=100, optimize=True) 

おかげで、任意のヘルプや提案は大歓迎です!

+0

イメージファイルを0バイトで取得できますか? –

答えて

0

これは、コードの多かれ少なかれラフバージョンですが、私はOpenCVのに使用さ、それはまた、PILのために同じように機能するはずです

import glob 
import numpy as np 
from PIL import Image 
image_list = [] 
for filename in glob.glob('name_of_folder/*.jpg'): 
    im=Image.open(filename) 
    image_list.append(im) 
a=0 
c=[] 
for i in range(0,len(image_list)): 
    #ur image cropping and other operations in here for each image_list[i] 
    c.append(image_list[i]) 
    c[i].save() 
+0

それを感謝してください男!これを試してみましょう! – RayX

0

コード1:あなたの修正されたコードです

、あなたのほとんどを修正パスに正確に参加する必要があります。コードでパスとファイル名の間にセパレータ/を追加していませんでした。 os.path.joinを使用すると、directory pathfilenameを寄付することができます。

さらに、トリミングには4つの引数ではなく、4つのタプルが必要です。

from PIL import Image 
import os.path, sys 

path = "C:\\Users\\xie\\Desktop\\tiff\\Bmp" 
dirs = os.listdir(path) 

def crop(): 
    for item in dirs: 
     fullpath = os.path.join(path,item)   #corrected 
     if os.path.isfile(fullpath): 
      im = Image.open(fullpath) 
      f, e = os.path.splitext(fullpath) 
      imCrop = im.crop((30, 10, 1024, 1004)) #corrected 
      imCrop.save(f + 'Cropped.bmp', "BMP", quality=100) 

crop() 
+0

ありがとうuser1767754今は完璧に機能します!非常に感謝している! – RayX

+0

歓迎します、イメージフォーマットのみがフォルダにあることを確認してください。 'os.path.splitext'メソッドを使うか、tryブロック内でスキップするだけでチェックできます。 – user1767754

関連する問題