Appia의 IT세상

파이썬[Python, Pillow] 특정 크기 이상인 사진들 확인하는 방법 & 특정 크기 이상인 사진 파일들만 크기 변경하는 방법 본문

Python/Python 응용

파이썬[Python, Pillow] 특정 크기 이상인 사진들 확인하는 방법 & 특정 크기 이상인 사진 파일들만 크기 변경하는 방법

Appia 2021. 2. 25. 06:14
반응형

파이썬[Python, Pillow] 특정 크기 이상인 사진들 확인하는 방법 & 

특정 크기 이상인 사진 파일들만 크기 변경하는 방법

Python Pillow 특정 사이즈 이상인 사진들 확인하기 

앞서 포스팅과 비슷한 부분들이기 하지만, 특정 크기에 맞춘 사진들을 확인하는 방법에 대해서 포스팅을 해보고자 합니다. 그리고 이 방법을 토대로, 특정 크기 이상인 파일들만 사이즈를 입력된 크기로 변경하는 방법에 대해서 이야기를 하고자 합니다. 

 

실제, 블로그 포스팅을 위해서 한번에 사진 파일들의 크기를 조절하다보니, 한번 변경된 이미지들 또한 다시 변경해버리는 실수를 해서, 이러한 부분들을 만회하기 위해서, 크기중에 조절이 필요없는 사진들은 스킵하기 위해서 다음과 같은 방식을 사용하였습니다. 

 

그럼, 먼저 특정 크기 이상인 사진 파일을 확인하는 방법에 대해서 살펴보겠습니다. 먼저 다음과 같은 순서로 이루어집니다. 

1. 기준이 되는 사이즈를 입력

2. 특정 경로에 파일중에 이미지 파일만 선별

3. 2번에서 입력된 파일들의 좌우 측 중에 큰 쪽 기준으로 기준이되는 사이즈와 비교 

 

위와 같은 방식으로 진행이 됩니다. 그럼 코드를 한번 살펴보겠습니다. 

from PIL import Image
import os.path

targerdir = r"D:\여행\20210213_충주\카페단월"

files = os.listdir(targerdir)

# 측정되기 원하는 사이즈 크기 입력 
wantedSize = 1000

# 지원하는 형식 입력
format = [".jpg",".png",".jpeg","bmp",".JPG",".PNG","JPEG","BMP"]

#경로에 따른 파일 출력 
for (path,dirs,files) in os.walk(targerdir):

    for file in files:
    
         if file.endswith(tuple(format)):
         
             image = Image.open(path+"\\"+file)
             
             # 좌우측 중에 큰 쪽을 특정 변수에 치환

             if image.size[0] > image.size[1]:
             
                 tempsize =image.size[0]

             else:
             
                 tempsize =image.size[1]
                 
             # 좌우측중에 큰 사이즈 기반으로 치환된 변수 사이즈를 기준 사이즈와 비교 

             if tempsize > wantedSize :
             
                 print(image.filename)
                 
                 print(image.size)

 

위의 코드를 실행하면 다음과 같은 결과가 나타납니다. 

D:\여행\20210213_충주\카페단월\DSCF0957.JPG
(4896, 3264)
...
D:\여행\20210213_충주\카페단월\DSCF1006.JPG
(4896, 3264)

 

그럼 위의 코드를 바탕으로 약간의 유용을 해보도록 하겠습니다. 

파이썬[Python, Pillow] 사진 사이즈를 특정 사이즈에 맞게 자동으로 크기 변경하기

위의 링크에 있는 내용을 약간 유용한 부분입니다. 즉, 특정 사이즈보다 큰 부분들만 그 사이즈에 맞게 자동으로 변경하는 것입니다. 그럼 한번 살펴보겠습니다. 

from PIL import Image
import os.path

targerdir = r"D:\여행\20210213_충주\카페단월"

files = os.listdir(targerdir)

# 측정되기 원하는 사이즈 크기 입력 
wantedSize = 1000

# 지원하는 형식 입력
format = [".jpg",".png",".jpeg","bmp",".JPG",".PNG","JPEG","BMP"]

#경로에 따른 파일 출력 
for (path,dirs,files) in os.walk(targerdir):

    for file in files:
    
         if file.endswith(tuple(format)):
         
             image = Image.open(path+"\\"+file)
             
             # 좌우측 중에 큰 쪽을 특정 변수에 치환

             if image.size[0] > image.size[1]:
             
                 tempsize =image.size[0]

             else:
             
                 tempsize =image.size[1]
                 
             # 좌우측중에 큰 사이즈 기반으로 치환된 변수 사이즈를 기준 사이즈와 비교 

             if tempsize > wantedSize :
             	 # 파일 이름 출력
             	 print(image.filename)
             
                 # 변경할 비율 획득
                 
                 percent = wantedSize / tempsize

                 # 획득한 비율 출력
                 print(percent)

                 # 획득한 비율을 토대로 이미지 크기 변경
                 image = image.resize((int(image.size[0] * percent), int(image.size[1] * percent)))
                 image.save(path + "\\" + file)

                 print(image.size)

이와 같은 형태로 코드를 작성하시면 됩니다. 위에서 대부분은 동일하나, "if tempsize > wantedSize:" 부분이 상이합니다.  동일 폴더에 처음 한번 실행후에 2번째 실행시에는 적용될 파일들이 존재하지 않을 것입니다. 

 

이번 포스팅에서는 파이썬[Python, Pillow] 특정 크기 이상인 사진들 확인하는 방법 & 특정 크기 이상인 사진 파일들만 크기 변경하는 방법라는 주제로 간단히 살펴봤습니다. 블로그를 작성하시는 분들에게 나름 도움이 되실 것이라고 생각합니다. 혹 궁금하신점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments