python 그림 9 궁 격 분할 예제 구현

간단 한 소개
위 챗 친구 권 이나 웨 이 보,QQ 동태 에서'강박 증 환자'들 이 9 장 을 보 내 는 것 을 좋아 하 는 것 을 잘 알 고 있 습 니 다.어떤 그림 들 은 한 장의 그림 으로 나 뉘 어 진 구 궁 도 입 니 다.이런 조작 에 대해 어떻게 하 는 지 아 세 요?
본 고 는 Python 으로 만 든 구 궁 격 이미지 생 성기 입 니 다.포 장 된 exe 파일 입 니 다.사용 자 는 Python 을 설치 하 는 개발 환경 을 배치 하지 않 아 도 현지에서 이 프로그램 을 실행 하여 구 궁 격 그림 을 신속하게 생 성 할 수 있 습 니 다.
실현 원리
실현 원 리 는 매우 간단 하 다.그것 은 바로 PIL 라 이브 러 리 를 이용 하여 원 도 를 계속 작은 그림 으로 자 른 다음 에 새로운 작은 그림 으로 저장 하 는 것 이다.
각 칸 의 너비 와 높이 가 각각 w,h 라 고 가정 하면 첫 번 째 row 줄(0 부터 계산),두 번 째 col 열(0 부터 계산)의 격자 왼쪽 상단 좌표 와 오른쪽 아래 좌 표 는 각각(col*w,row*h),(col*w+w,r*h+h)이다.

소스 코드
다음은 프로그램의 모든 코드 입 니 다.이것 은 Python GUI 프로그램 입 니 다.코드 가 많 지 않 고 이해 하기 쉽 습 니 다.

# -*- coding: UTF-8 -*-
#          ,   
import tkinter as tk
from PIL import Image 
import sys 
 
 
#   input image        
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) #        3  。
 box_list = []
 # (left, upper, right, lower)
 for i in range(0,3):
 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) + '.png', 'PNG') 
 index += 1 
 
 
#     ,      
def cTofClicked():
 file_path=str(entryCd.get()) #             
 image = Image.open(file_path) 
 #image.show() 
 image = fill_image(image) 
 image_list = cut_image(image) 
 save_images(image_list) 
 labelcTof.config(text="       ,          !")
 
#   
top=tk.Tk()
top.title('        ')
labelcTof=tk.Label(top,text="             :",height=4,\
 width=40,fg="blue") 
labelcTof.pack()
entryCd=tk.Entry(top,text='0') #    ,      
entryCd.pack()
label_tip=tk.Label(top,text="             !",height=2,\
 width=40,fg="gray") 
label_tip.pack()
btnCal=tk.Button(top,text="         ",fg="red",bg="yellow",command=cTofClicked) #       
btnCal.pack()
 
top.mainloop() #      
실행 결과
인터페이스 이미지

텍스트 상자 에 그림 주 소 를 입력 하고"구 궁 격 그림 생 성 클릭"을 누 르 십시오.

이상 은 python 이 그림 9 궁 격 분할 을 실현 하 는 예제 의 상세 한 내용 입 니 다.python 그림 9 궁 격 분할 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기