본문 바로가기
  • 야근없는 삶을 위하여
파이썬

Python 이미지 세로로 합치기 - 5 (이미지 비율 변경)

by 우당코 2024. 3. 13.
반응형

이미지를 정상적으로 불러 왔으니 가공을 해보자.

 

아직 어떻게 이미지를 불러오는지 모른다면 이전글 참고

 

Python 이미지 세로로 합치기 - 4 (이미지 불러오기)

pillow를 이용해서 이미지를 불러오고 화면에 출력해 보자. 아직 필수 라이브러리를 설치 하지 않았다면 아래 글 참고 Python 이미지 세로로 합치기 - 3 (라이브러리 설치) 필요한 라이브러리를 설치

udangco-coding-record.tistory.com

 

비례식을 이용하여 이미지 비율 조정하기

1. 비례식

초등학교 때 비례식을 배웠을 것이다.

비례식

이때 A는 무엇일까요?

자세한 설명은 생략하겠다.

2. 비율 조정 식

예시

 

 

넓이가 1024px인 사각형으로 바꾼다면 높이는 몇일까?

2048 : 600 = 1024 : x

x = (600 x 1024) / 2048

즉, 바뀐 높이 = ( 높이 x 바뀔 넓이) / 넓이

 

이것을 그대로 코드로 옮기자.

 

3. 이미지의 넓이 높이 구하기

import os
from PIL import Image

img = ['1.jpg', '2.jpg', '3.jpg']
for i in img:
    image = Image.open(i)
    print(image.size)

 

image.size: image의 사이즈를 알려줘

print로 출력해보면 아래와 같이 나온다.

첫 번째가 넓이, 두 번째가 높이

넓이와 높이를 변수에 넣자.

image_width = image.size[0]
image_height = image.size[1]
print('넓이: ' + str(image_width) + ' / 높이: ' + str(image_height))

 

print의 사용법인데 '넓이'는 텍스트고 image_width는 숫자라서 텍스트(string)로 통일해서 보여 주었다.

실행하면 아래와 같이 잘 적용되는 것을 확인할 수 있다.

 

4. 이미지 비율 변경

이미지 변경에는 resize가 필요하다.

resize(바뀔 넓이, 바뀔 높이)

이렇게 적용하면 된다.

new_width = 1024
new_image = image.resize((new_width, int((image_height * new_width) / image_width)))
print(new_image.size[1])  # 세로 사이즈를 확인하자

 

new_width: 바뀔 넓이를 변수로 만들어 주고

위에서 설명했던 비례식을 이용한 계산을 해준다.

바뀐 높이 = ( 높이 x 바뀔 넓이) / 넓이

resize에는 소수(float)가 들어갈 수 없기 때문에 int로 바꿔 주었다.

 

print로 변경된 높이를 확인해보면 잘 변경된 것을 확인할 수 있다.

 

다음 시간에는 이미지를 합쳐보자.

 

Python 이미지 세로로 합치기 - 6 (이미지 합치기)

이미지 비율을 일정하게 조절했다면 이제 이미지를 합쳐보자. 이미지 비율 변경을 하지 않았다면 아래 링크로 2024.03.13 - [파이썬] - Python 이미지 세로로 합치기 - 5 (이미지 비율 변경) 이전 코드 i

udangco-coding-record.tistory.com

 

반응형