2017-12-13 638 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

감사합니다. 사용자 1767754. 지금 당장은 완벽하게 작동합니다! 대단히 감사드립니다! – RayX

+0

환영합니다. 폴더에 이미지 형식 만 있는지 확인하십시오. 'os.path.splitext' 메쏘드를 사용하거나, try 블록 내에서 그것을 건너 뛰기 만하면됩니다. – user1767754