Python 으로 그림 한 장 을 9 궁 격 으로 나 누 는 예 를 실현 합 니 다.

친구 권 이나 공간 에서 친구 가 사진 을 올 리 는 것 을 자주 볼 때 친구 권 의 사진 을 구 궁 격 으로 나 누 어 대 신의 블 로그 자 료 를 참고 하여 다음 과 같이 정리 합 니 다.
그림 을 구 궁 격 으로 나 누 는 사고:
그림 읽 기->그림 을 정사각형 으로 채 우기(fillimage 함수)->그림 을 9 장 으로 나 누 기(cutimage 함수)->그림 저장(saveimage)->over
코드 구현 은 다음 과 같 습 니 다.

from PIL import Image
import sys
#         
def fill_image(image):
  width, height = image.size
  #               
  new_image_length = width if width > height else height
  #     [  ]
  new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')
  #           ,  
  if width > height:#      ,          
    #(x,y)                  
    new_image.paste(image, (0, int((new_image_length - height) / 2)))
  else:
    new_image.paste(image, (int((new_image_length - width) / 2),0))
  return new_image
#  
def cut_image(image):
  width, height = image.size
  item_width = int(width / 3)
  box_list = []
  # (left, upper, right, lower)
  for i in range(0,3):#    ,  9          
    for j in range(0,3):
      #print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width))
      box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)
      box_list.append(box)
 
  image_list = [image.crop(box) for box in box_list]
  return image_list
#  
def save_images(image_list):
  index = 1
  for image in image_list:
    image.save(str(index) + '.jpg')
    index += 1
 
if __name__ == '__main__':
  file_path = "    _20180809234441.jpg"
  image = Image.open(file_path)
  # image.show()
  image = fill_image(image)
  image_list = cut_image(image)
  save_images(image_list)
효 과 는 다음 과 같 습 니 다:

뚱뚱 한 신 이 제공 한 사 고 를 참고 하면 그 안의 논 리 는 매우 재미있다.
1.시작 은 흰색 바탕 의 그림 을 원 그림 에 붙 이 는 것 과 같다.
2.그림 을 자 를 때 9 칸 으로 나 누 어 쓰 는 순환 도 매우 아름 답 습 니 다.
3.코드 에 for 순환 의 반복 사용 이 여러 번 나 타 났 습 니 다:[image.crop(box)for box in boxlist]앞으로 도 이런 문법 을 많이 연습 해 야 합 니 다.
이상 파 이 썬 으로 한 장의 그림 을 9 궁 격 으로 나 누 는 예 는 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기