programing

PIL을 사용하여 이미지를 자르는 방법은 무엇입니까?

stoneblock 2023. 6. 13. 21:56

PIL을 사용하여 이미지를 자르는 방법은 무엇입니까?

지정된 이미지에서 처음 30행과 마지막 30행을 제거하여 이미지를 잘라내고자 합니다.저는 검색해봤지만 정확한 해결책을 얻지 못했습니다.누가 제안 좀 해주시겠어요?

방법이 있습니다.

w, h = yourImage.size
yourImage.crop((0, 30, w, h-30)).save(...)

이를 위해 PIL(필로우)을 가져와야 합니다.크기가 1200, 1600인 이미지가 있다고 가정합니다.이미지를 400, 400에서 800, 800으로 자를 것입니다.

from PIL import Image
img = Image.open("ImageName.jpg")
area = (400, 400, 800, 800)
cropped_img = img.crop(area)
cropped_img.show()

(좌, 상, 우, 하)는 두 점을 의미합니다.

  1. (왼쪽, 위쪽)
  2. (오른쪽, 아래)

800x600 픽셀 이미지의 경우 이미지의 왼쪽 상단 지점은 (0, 0), 오른쪽 하단 지점은 (800, 600)입니다.

영상을 반으로 잘라내는 경우:

from PIL import Image
img = Image.open("ImageName.jpg")

img_left_area = (0, 0, 400, 600)
img_right_area = (400, 0, 800, 600)

img_left = img.crop(img_left_area)
img_right = img.crop(img_right_area)

img_left.show()
img_right.show()

여기에 이미지 설명 입력

좌표계

Python Imaging Library는 왼쪽 상단 모서리에 (0,0)이 있는 데카르트 픽셀 좌표계를 사용합니다.좌표는 암시된 픽셀 모서리를 나타냅니다. (0, 0)로 지정된 픽셀의 중심은 실제로 (0.5, 0.5)에 있습니다.

좌표는 일반적으로 2-튜플(x, y)로 라이브러리에 전달됩니다.직사각형은 4-튜플로 표시되며 왼쪽 위 모서리가 먼저 표시됩니다.예를 들어, 800x600 픽셀 이미지를 모두 덮는 직사각형은 (0, 0, 800, 600)으로 기록됩니다.

더 쉬운 방법은 ImageOps의 자르기를 사용하는 것입니다.각 면에서 자를 픽셀 수를 입력할 수 있습니다.

from PIL import ImageOps

border = (0, 30, 0, 30) # left, top, right, bottom
ImageOps.crop(img, border)

언급URL : https://stackoverflow.com/questions/9983263/how-to-crop-an-image-using-pil