python實現圖片九宮格分割
更新時間:2021年03月07日 08:35:38 作者:mico_cmm
一張圖片分成的九宮圖,大家知道是怎么做到嗎?這篇文章就為大家詳細介紹了python實現圖片九宮格分割功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
大家都知道在微信朋友圈或者微博以及QQ動態(tài)中,有很多“強迫癥患者”發(fā)圖片都愛發(fā)9張,而有些圖是一張圖片分成的九宮圖,對于這種操作,大家知道是怎么做到的嗎?
本文就是用Python做的一個九宮格圖片生成器,是一個打包好的exe文件,用戶無需部署安裝Python的開發(fā)環(huán)境,在本地就可以運行此程序,以此快速生成九宮格圖片。
下面是程序的所有代碼,這是一個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() # 執(zhí)行主循環(huán)
打包好的exe程序下載地址:python實現圖片九宮格分割
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解Python中高階函數(map,filter,reduce,sorted)的使用
高階函數就是能夠把函數當成參數傳遞的函數就是高階函數,換句話說如果一個函數的參數是函數,那么這個函數就是一個高階函數。本文為大家詳細講解了Python中常用的四個高階函數,感興趣的可以了解一下2022-04-04
Python 中如何使用 setLevel() 設置日志級別
這篇文章主要介紹了在 Python 中使用setLevel() 設置日志級別,Python 提供了一個單獨的日志記錄模塊作為其標準庫的一部分,以簡化日志記錄,本文將討論日志記錄 setLevel 及其在 Python 中的工作方式,需要的朋友可以參考下2023-07-07

