python九宮格圖片的原理
原理
1、用Python製作的九宮格影像生成器包裝exe檔案,使用者無需部署安裝Python的開發環境,即可在當地執行該程式,快速生成九宮格影像。
2、用PIL庫不斷畫小區域,切下來儲存成新的小圖片。
例項
假設每一個格子的寬和高分別是w、h,那麼第row行(從0開始計數),第col列(從0開始計數)的格子左上角座標和右下角座標分別是(col * w, row * h),(col * w + w, r * h + h)。
# -*- 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九宮格圖片的原理,希望對大家有所幫助。更多Python學習指路:
本文教程操作環境:windows7系統、Python 3.9.1,DELL G3電腦。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4692/viewspace-2829736/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- css 九宮格CSS
- 遊戲九宮格遊戲
- iOS 中使用 FlexBox 佈局實現圖片九宮格iOSFlex
- 小程式—九宮格心形拼圖
- 數獨遊戲九宮格遊戲
- 九宮格切圖-創意分享新風尚
- 短視訊平臺原始碼,動態上傳的圖片以九宮格形式展示原始碼
- Flutter 仿微信/微博九宮格Flutter
- 自定義九宮格載入的實現
- 九宮格抽獎–手擼程式碼
- 使用 yogaKit 實現一個九宮格
- SVG九宮格密碼效果程式碼SVG密碼
- iOS-九宮格密碼解鎖iOS密碼
- 手機的九宮格圖形解鎖演算法(判斷是否合法)演算法
- 破解九宮格密碼,一清即可密碼
- 教你寫一個九宮格鎖屏ViewView
- css九宮格佈局程式碼例項CSS
- Java解世界最難九宮格問題Java
- iOS swift 最好用的 手勢密碼 九宮格iOSSwift密碼
- js版九宮格拼圖與啟發式搜尋(A*演算法)JS演算法
- jQuery九宮格抽獎效果程式碼例項jQuery
- 用jQuery編寫簡單九宮格抽獎jQuery
- L1-104 九宮格 分數 20
- iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別iOSUI型別
- 【微信小程式雲開發】1分鐘學會實現上傳、下載、預覽、刪除圖片,並且以九宮格展示圖片微信小程式
- Python 帶你一鍵生成朋友圈超火的九宮格短視訊Python
- 基於Vue實現拖拽升級(九宮格拖拽)Vue
- Android利用GridView載入九宮格選單AndroidView
- 如何用程式解圖片迷宮?
- C# 模仿微信生成九宮圖頭像C#
- 基於螢石雲實現的九宮格影片監控效果
- canvas 基礎系列(三)之實現九宮格抽獎Canvas
- Android記憶體優化之封裝九宮格Android記憶體優化封裝
- Html5響應式設計實現九宮格HTML
- 九宮八陣圖之天覆陣——防火牆防火牆
- PHP+Ajax微信手機端九宮格抽獎例項PHP
- 基於React跑一個簡易版九宮格抽獎React
- Html5實現手機九宮格密碼解鎖功能HTML密碼