CodeGym /자바 코스 /Python SELF KO /이미지 크기 조정

이미지 크기 조정

Python SELF KO
레벨 45 , 레슨 1
사용 가능

1. 이미지 로드 및 저장

Pillow에서 이미지를 로드하려면 Image 클래스를 사용해. 이미지를 로드한 후에는 변환하고 다양한 포맷으로 저장할 수 있어. 이미지 로드 및 저장의 기본 작업을 살펴보자.

이미지 로드

이미지를 로드하려면 Image.open() 메소드를 사용해. 이 메소드는 지원되는 포맷의 이미지를 열 수 있어.

Python

from PIL import Image

# 이미지 열기
image = Image.open("example.jpg")

# 파일 정보 출력
print(image.format)  # 이미지 포맷, 예: JPEG 또는 PNG
print(image.size)    # 이미지 크기 (너비, 높이)
print(image.mode)    # 색상 모드, 예: RGB 또는 Grayscale

이 코드는 example.jpg 이미지를 로드하고 포맷, 크기 및 색상 모드 등을 출력해. 이미지가 같은 폴더에 없으면 파일의 전체 경로를 지정해야 해.

이미지 저장

이미지를 로드 및 변환한 후, 다른 지원되는 포맷으로 저장할 수 있어. save() 메소드는 출력 파일의 이름과 포맷을 지정할 수 있도록 해줘.

Python

# 다른 포맷으로 이미지 저장
image.save("example.png")  # PNG 포맷으로 이미지 저장

JPEG 포맷의 이미지를 저장할 때 품질을 변경하여 파일 크기를 줄일 수도 있어. 이는 특히 유용해.

Python

# 품질 변경하여 저장하기
image.save("compressed_example.jpg", quality=85)  # quality 값은 1에서 95 사이

2. 이미지 크기 조정

크기 조정은 이미지 작업에서 가장 흔한 작업 중 하나야. Pillow는 너비와 높이에 따라 크기를 변경하거나, 비율을 유지하면서 크기를 조정하거나, 썸네일을 만드는 등 여러 방법을 제공해.

resize() 메소드로 크기 조정

resize() 메소드는 이미지의 정확한 크기(너비와 높이)를 지정할 수 있게 해줘. 하지만 새로운 크기가 원래 비율을 유지하지 않을 경우 이미지는 왜곡될 수 있어.

Python

# 새로운 크기 설정
new_size = (800, 600)
resized_image = image.resize(new_size)

# 크기 조정된 이미지 저장
resized_image.save("resized_example.jpg")

여기서는 이미지를 800x600 픽셀로 조정하고 새 파일로 저장해. 원본 이미지의 비율이 다른 경우, 새로운 크기에 맞게 이미지를 늘리거나 압축할거야.

thumbnail() 메소드로 비율 유지하면서 크기 조정

이미지의 비율을 유지하면서 크기를 조정하려면 thumbnail() 메소드를 사용해. 이 메소드는 지정된 크기에 맞게 이미지를 자동으로 줄이며, 원래 비율을 유지해줘. 이는 썸네일 이미지를 생성할 때 특히 유용해.

Python

# 최대 크기 400x400 픽셀 썸네일 생성
image.thumbnail((400, 400))

# 썸네일 저장
image.save("thumbnail_example.jpg")

thumbnail() 메소드는 "제자리에서" 이미지를 변경해. 즉, image 객체 자체가 변경된다는 뜻이야. thumbnail()을 실행한 후 Pillow는 이미지를 최대 크기가 400x400 픽셀을 초과하지 않도록 줄이며, 비율을 유지해.

ImageOps.fit() 메소드로 비율 유지하며 크기 조정

가끔은 이미지의 비율을 유지하면서도 지정된 크기에 정확히 맞게 이미지를 조정해야 할 때가 있어. 이런 경우 ImageOps.fit() 메소드를 사용하면 돼.

Python

from PIL import ImageOps

# 새로운 크기 설정
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)

# 잘린 이미지 저장
fitted_image.save("fitted_example.jpg")

ImageOps.fit() 메소드는 이미지를 자동으로 자르고, 지정된 크기에 맞게 조정해줘. 예를 들어 원본 이미지가 직사각형이라면, 이 메소드는 400x400 크기에 맞도록 양쪽 가장자리나 위아래를 잘라내.

3. 전체 코드 예제

아래는 우리가 다룬 모든 메소드를 하나로 합친 코드 예제야. 로드에서부터 크기 조정과 저장까지 포함됐어.

Python

from PIL import Image, ImageOps

# 이미지 열기
image = Image.open("example.jpg")

# 비율 무시하고 크기 조정
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")

# 비율 유지하며 크기 줄이기
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")

# 지정 크기에 맞춰 자르면서 크기 조정
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")

크기 조정 메소드 설명

  1. resize(): 원하는 크기를 자유롭게 지정할 수 있지만, 원본 비율과 맞지 않으면 왜곡될 수 있어.
  2. thumbnail(): 이미지를 줄이며 원본 비율을 유지해. 큰 이미지를 줄이거나 썸네일을 만들 때 유용해.
  3. ImageOps.fit(): 지정된 크기에 맞추기 위해 이미지를 자르고 조정해. 왜곡 없이 맞출 때 좋아.

4. 팁:

이미지 크기 조정의 실용적인 활용

  1. 웹사이트 이미지를 최적화하기: 큰 이미지는 페이지 로딩을 느리게 할 수 있어. 크기를 줄이고 품질을 유지하는 것이 중요해.
  2. 갤러리용 썸네일 생성: thumbnail()을 사용하면 썸네일 이미지를 간단히 만들 수 있고, 미리 보기로 보여줄 수 있어.
  3. 정해진 크기에 맞추기: 프로필 사진이나 아바타처럼 고정 크기에 맞추려면 ImageOps.fit()을 사용하면 자르기와 조정이 쉬워.

메소드 선택 팁

크기를 지정하고 비율이 중요하지 않을 때는 resize()를 사용해.

비율을 유지하며 이미지를 줄이거나 썸네일을 만들 때는 thumbnail()을 사용해.

왜곡 없이 특정 크기에 맞게 이미지가 필요하면 ImageOps.fit()을 사용해. 불필요한 부분을 잘라내기에도 좋아.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION