이미지 크기 변경하기
이미지 위에 삽입된 문자열의 색이 이미지의 배경과 유사해서 가독성이 떨어진다면, 이미지의 명도를 조절해서 문자열의 색과 대비되게 할 수 있습니다. 이처럼 이미지의 명도를 높이거나 낮출 때는 알파 합성(alpha composite)이라는 기법을 활용하면 되는데, 쉽게 말하면 원본 이미지 위에 불투명한 색을 덧씌워 탁하게 만드는 것입니다.
이미지 정보 확인
'img' 폴더의 'img_001.jpg' 파일의 이미지 크기와 형식, 색상 모드를 확인합니다. Image 객체의 속성을 화면에 출력하기만 하면 됩니다.
비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step2_1.py'로 변경합니다. 그리고 나서 다음과 같이 입력한 뒤, 대화형 창에서 실행합니다. 대화형 창에서 픽셀 단위로 표시된 이미지 크기, 형식, 색상 모드가 차례대로 출력됩니다.
from PIL import Image
from step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다..
img = Image.open(IMG_DIR / "img_001.jpg")
print(f"{img.size=}, {img.format=}, {img.mode=}")
실행결과 img.size=(1080, 1476), img.format='JPEG', img.mode='RGB'
이미지 크기 변경
이제 Image 객체의 함수 resize()를 사용하여 크기를 변경하겠습니다. 소스 코드 'step_2_1.py'에 이어서 다음 코드를 입력한 뒤. 대화형 창에서 실행합니다. 변경된 이미지와 크기가 (가로, 세로) 형식으로 출력되고, img_resize에 저장된 Image 객체가 출력된 것을 알 수 있습니다.
from PIL import Image
from step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다..
img = Image.open(IMG_DIR / "img_001.jpg")
print(f"{img.size=}, {img.format=}, {img.mode=}")
SIZE = (500, 500) # 07
img_resize = img.resize(SIZE) # 08
print(f"{img_resize.size=}")
img_resize
실행결과 img_resize.size=(500, 500)

07 이미지의 크기를 튜플 형식의 가로, 세로 쌍으로 만들고, 이를 변수 SIZE에 저장합니다.
08 함수 resize()를 사용해서 img의 크기를 SIZE로 변경하고, 이를 변수 img_resize에 저장합니다.
대화형 창에 출력된 이미지는 의도대로 크기가 변경되었지만, 가로와 세로 크기를 조정하는 과정에서 원본 이미지의 비율이 무시된 채로 납작하게 줄었습니다. 원본 이미지의 비율을 유지한 채로 크기만 변경하고 싶다면 어떻게 해야 할까요?
이미지 비율을 유지하면서 크기 변경
ImageOps 모듈이 제공하는 다양한 함수를 사용하면 간단합니다. 소스 코드 'step_2_1.py'에 이어서 다음 코드를 입력한 뒤, 대화형 창에서 실행합니다. 화면에 출력된 이미지 크기 정보와 실제 이미지를 비교하면, img가 (366, 500)px로 변경된 것을 알 수 있습니다.
from PIL import Image
from step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다..
img = Image.open(IMG_DIR / "img_001.jpg")
print(f"{img.size=}, {img.format=}, {img.mode=}")
SIZE = (500, 500)
img_resize = img.resize(SIZE)
print(f"{img_resize.size=}")
img_resize
from PIL import ImageOps
img_cont = ImageOps.contain(img, SIZE) # 14
print(f"{img_cont.size = }")
img_cont
실행결과 img_cont.size = (366, 500)

14 함수 contain()는 img의 크기를 SIZE로 변경합니다. 원본 이미지의 가로와 세로 비율이 유지됩니다.
함수 contain()를 사용하여 가로보다 세로가 긴 직사각형 형태의 비율을 유지하며 크기를 조정했기 때문에 가로 크기가 366px로 줄어들었습니다.
이처럼 원본 이미지의 비율과 크기 변경 후 이미지의 비율이 서로 다르면, 완벽한 크기 변경이 어렵습니다. 이럴 때는 어쩔 수 없이 이미지의 비율이나 이미지 크기 중 한 가지를 초점을 두고 이미지 크기를 변경해야 합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 이미지 배열하기 (0) | 2025.11.29 |
|---|---|
| 이미지 합성하기 (0) | 2025.11.26 |
| 이미지 처리 기본 익히기 (0) | 2025.11.17 |
| 이미지 불러오기 (0) | 2025.11.14 |
| 제목, 레이블, 범례 추가하기 (0) | 2025.11.11 |