CodeGym /자바 코스 /Python SELF KO /콘텐츠 준비를 위한 이미지 자르기 및 회전

콘텐츠 준비를 위한 이미지 자르기 및 회전

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

1. 이미지 자르기

자르기에 대한 개념과 적용

자, 이제 이미지를 자르고 회전하는 방법을 알아보자. 이 기술은 웹사이트 그래픽 준비에서 소셜 미디어 콘텐츠 제작까지 다양한 프로젝트에서 유용할 거야.

이미지 자르기란 사진의 불필요한 가장자리를 잘라내고 주요 객체에 초점을 맞추는 것과 같아. 예를 들어, 멋진 노을 사진을 찍었는데 가장자리에 우연히 호기심 많은 사람들이 찍혔다고 상상해 봐. 자르기는 그들을 (물론 가상으로) 법정 없이 제거하도록 도와줄 거야!

메소드 crop()

crop() 메소드는 이미지에서 자르고 싶은 직사각형 영역의 좌표를 받아. 좌표는 (왼쪽, 위쪽, 오른쪽, 아래쪽) 네 가지 값으로 지정돼.


# 이미지 자르기
cropped_image = image.crop((100, 100, 400, 400))

# 자른 이미지 저장
cropped_image.save("cropped_example.jpg")
        

이 예제에서는 이미지의 왼쪽 위 모서리가 (100, 100) 지점이고 오른쪽 아래 모서리가 (400, 400) 지점인 영역이 잘릴 거야. 이 메소드는 원본 이미지의 지정된 부분을 사용해 새로운 이미지를 만들어.

이미지 크기를 기반으로 한 동적 자르기

이미지의 중앙을 자르고 싶다면, 크기를 기반으로 자르기 좌표를 계산할 수 있어:


width, height = image.size
left = (width - 200) / 2
top = (height - 200) / 2
right = (width + 200) / 2
bottom = (height + 200) / 2

center_cropped_image = image.crop((left, top, right, bottom))
center_cropped_image.save("center_cropped_example.jpg")
        

이 코드는 200x200 픽셀 크기의 중앙 부분을 자르게 돼. 좌표 계산은 잘린 영역이 이미지 중앙에 위치하도록 보장해.

2. 이미지 회전

이미지 회전은 그 방향을 변경할 수 있게 해, 특히 사진이 잘못된 방향으로 찍혔을 때 또는 예술적 효과를 내기 위해 유용해.

메소드 rotate()

rotate() 메소드는 이미지를 반시계 방향으로 지정된 각도로 회전해. 각도는 도 단위로 지정되며, 메소드는 새로운 회전된 이미지를 생성해.


# 이미지를 반시계 방향으로 90도 회전
rotated_image = image.rotate(90)
rotated_image.save("rotated_90_example.jpg")
        

이 예제에서는 이미지가 반시계 방향으로 90도 회전될 거야. 원하는 결과를 얻기 위해 다른 각도 (예: 45, 180 또는 270도)를 설정할 수도 있어.

회전 시 흰색 여백 조정

기본적으로 rotate()는 이미지 가장자리에 흰색 여백(또는 RGBA 모드라면 투명)을 추가해 모든 콘텐츠를 보존하려고 해. 만약 여백 없이 이미지를 채우고 싶다면 expand=True 매개변수를 사용해.


# 이미지 확장을 사용하여 회전 시 여백 없이 채우기
rotated_expanded_image = image.rotate(45, expand=True)
rotated_expanded_image.save("rotated_expanded_example.jpg")
        

이 경우 Pillow는 이미지의 크기를 늘려 모든 내용을 포함하도록 해주는데, 특히 45도와 같은 비표준 각도로 회전할 때 유용해.

3. 이미지 대칭

이미지 대칭은 이미지를 수평 또는 수직으로 뒤집을 수 있도록 해. 이는 사진에서 객체의 방향을 변경하거나 대칭 효과를 만들 때 유용해.

메소드 transpose()

transpose() 메소드는 대칭에 사용되며 다음 매개변수를 지원해:

  • Image.FLIP_LEFT_RIGHT: 수평 대칭.
  • Image.FLIP_TOP_BOTTOM: 수직 대칭.

# 수평 대칭
flipped_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_horizontal.save("flipped_horizontal_example.jpg")

# 수직 대칭
flipped_vertical = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_vertical.save("flipped_vertical_example.jpg")
        

이 명령은 이미지를 수평 및 수직으로 뒤집어 다양한 효과를 내거나 방향을 수정할 수 있어.

이미지 자르기, 회전 및 대칭의 실제 사용 예시

  1. 이미지의 특정 영역에 초점 맞추기: 자르기를 사용해 필요한 이미지 부분을 강조할 수 있어. 이는 초상화 제작, 불필요한 디테일 자르기, 소셜 미디어 또는 웹사이트를 위한 이미지 준비에 유용해.
  2. 이미지 방향 수정: 회전은 사진 방향을 수정하는 데 사용돼, 특히 기기가 사진을 잘못된 방향으로 찍은 경우. 예를 들어, 가로 방향으로 찍힌 이미지를 세로 방향으로 게시하기 위해 수정할 수 있어.
  3. 대칭 효과 만들기: 대칭은 디자인에서 대칭 이미지를 만들고, 흥미로운 시각 효과를 내며 구성을 개선하기 위해 자주 사용돼.

4. 일반적인 오류와 그 해결 방법

Pillow를 사용할 때 초보자가 자주 직면하는 오류가 있어. 그런 오류 중 하나는 이미지의 실제 크기 범위를 벗어난 자르기를 시도하는 거야. 항상 이미지 크기를 확인하고 자르기 좌표를 해당 크기 내로 설정해.

또 다른 문제는 회전 중에 rotate 메소드를 추가 설정 없이 사용할 경우 이미지가 잘려 보일 수 있다는 거야. 이는 회전 시 이미지 크기가 변경되기 때문이야. 이를 방지하려면 expand=True 매개변수를 사용해:


# 이미지 모서리가 잘리지 않도록 확장을 사용해 45도 회전
rotated_image = image.rotate(45, expand=True)
rotated_image.save("rotated_expanded.jpg")
        
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION