python語言編寫一個生成九宮格圖片的代碼_python實現圖片九宮格分割

大家都知道在微信朋友圈或者微博以及QQ動態中,有很多“強迫癥患者”發圖片都愛發9張,而有些圖是一張圖片分成的九宮圖,對于這種操作,大家知道是怎么做到的嗎?

本文就是用Python做的一個九宮格圖片生成器,是一個打包好的exe文件,用戶無需部署安裝Python的開發環境,在本地就可以運行此程序,以此快速生成九宮格圖片。

下面是程序的所有代碼,這是一個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() # 執行主循環

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

密碼學專題 OpenSSL標準轉換指令

概述 繁多復雜的各種文件編碼格式、證書格式和密鑰格式等。事實上,并非OpenSSL開發者想要將數字世界弄得如此令人頭疼,只是由于各種原因,數字世界存在各種不同的標準,為了盡量兼容這些不同的標準,OpenSSL開發者才相應…

java pakage、import關鍵字

package介紹 常用的包 import 案例

python數組初始化_Python Numpy 數組的初始化和基本操作

Python 是一種高級的,動態的,多泛型的編程語言。Python代碼很多時候看起來就像是偽代碼一樣,因此你可以使用很少的幾行可讀性很高的代碼來實現一個非常強大的想法。 一.基礎: Numpy的主要數據類型是ndarray,即多維數組…

密碼學專題 OpenSSL中SSL相關指令

再談SSL和OpenSSL 由于SSL協議已經是密碼學和PKI技術中非常具體的一個應用協議,為了實現它,OpenSSL在密碼學基礎應用和PKI技術的基礎實現上做了大量的工作,才逐漸形成和奠定了OpenSSL在密碼學應用和PKI技術開發中的重要基礎軟件包地位。Open…

python企業發放的獎金_你公司的年終獎發了嗎?

沒發, 被裁了. 跨境電商行業, 2017.7 入職,2018.11.19 下午接到裁員通知.. 人事找我聊了下,叫我一個星期之內走,補償1個月工資.... 我想想有點不對勁.. 于是我百度了下,5分鐘之后,提出了我的方案: 1、按照勞動法應該補償1.5個月,并且提前1月通知 2、補償2.5個月. 我立馬走. 最后…

使用MetaMask實現轉賬交易時附帶Input Data數據

進入如下頁面,點擊View Assert in Explorer進入Etherscan網站,就可以看到本賬戶先前所有的交易信息。 字段分析 Txn Hash 是交易的HashMethod:交易的類型,一般是兩種,如果是Transfer指定的是合約部署;如…

Ubuntu安裝Google瀏覽器

下載谷歌瀏覽器 直接使用Ubuntu自帶的火狐瀏覽器進行下載 默認下載到/tmp臨時文件夾里面,考慮到權限問題,需要將其移動到 Downloads文件夾下面使用命令 sudo mv ./goo(Tab)~/Down(Tab)使用命令行的方式進行下載 wget https://dl.g…

普通類創建獲取session 方式_猿蛻變11——一文搞懂mybatis花式使用方式

看過之前的蛻變系列文章,相信你對mybatis有了初步的認識。但是這些還不夠,我們今天進一步來了解下mybatis的一些用法。猿蛻變同樣是一個原創系列文章,幫助你從一個普通的小白,開始掌握一些行業內通用的框架技術知識以及鍛煉你對系…

Ubuntu配置IPFS的環境

參考鏈接 Ubuntu上IPFS環境搭建 - 簡書 下載安裝包 下載地址:https://dist.ipfs.io/#go-ipfs頁面會自動根據你的操作系統提供適合的下載安裝包,所以需要在Ubuntu環境下點開上面那個鏈接,網頁自動識別當前的平臺并提供對應的版本&#xff0c…

composer升級_Composer-命令簡介

簡介Composer 是一個用于 PHP 依賴管理的工具。它實現了讓你聲明項目所依賴的庫,并幫你完成安裝/更新過程。以下命令來自 composer version 1.8.0。翻譯使用【百度翻譯】。通過在命令窗口執行:composer或者:composer list得到 composer 的全部…

Ubuntu搭建聯盟鏈,實現節點之間數據同步

安裝go環境 從參考鏈接選擇Linux版本的go的安裝包 使用命令 mv go(Tab補全)/usr/local 移動go安裝包到/usr/local目錄下使用命令解壓 sudo tar -xvzf go(Tab補全) 配置環境 sudo gedit ~/.profile export PATH$PATH:/usr/local/go/bin激活生效 sou…

關于python語言的編程模式、哪個說法正確_測驗1: Python基本語法元素 (第1周) 單選題+程序題...

第1章測驗,共10道單選題和2道編程題,限答1次 單選題 1.Guido van Rossum正式對外發布Python版本的年份是: A.2002 B.1998 C.2008 D.1991 正確答案: D Python成功了,所以早年的開發歷史也受到關注,以下是Gui…

火狐瀏覽器添加MetaMask錢包和本地開啟私有鏈開發

火狐瀏覽器添加MetaMask錢包 因為對其配置了代理工具,所以直接使用谷歌引擎搜索MetaMask錢包即可第一次使用,立即開始設置 點擊我同意,進行密碼的創建 牢記助記詞,助記詞及其關鍵,將其存儲在安全的地方 區塊鏈-開發 M…

python賦值01_python學習筆記1-賦值與字符串 | 學步園

閱讀本學習筆記需有一定語言基礎,閑話少說,我們開始 一、賦值與數字 【簡介】 python的賦值很簡單: number 1 # 數值 number 2 2 # 支持加減乘除運算 number (1 2j) * (1 - 1j) # 支持復數的運算 二、字符串 【簡介】 str "Hello,…

CLion導入用戶自己的lib和頭文件

文件的層級結構如上面所示對應的CMakeLists.txt配置文件如下面所示 cmake_minimum_required(VERSION 3.15) project(smart_shap)set(CMAKE_CXX_STANDARD 14)add_executable(${PROJECT_NAME} main.cpp )#target_link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}…

東芝移動硬盤驅動_傳輸數據不用等,高速移動硬盤數據線暢享快傳體驗

不管你是設計師,攝影師亦或是辦公一族,幾乎都能用到電腦,而電腦里的文件如果很多的話,為了安全起見都會備份一份數據,以免電腦儲存容量過大導致電腦卡頓。另一方面,為了保護數據防止丟失造成不必要的麻煩&a…

使用國密瀏覽器和使用Wireshark進行國密抓包

使用的軟件 信密瀏覽器 密信瀏覽器發布Windows正式版 - 密信技術國密Wireshark GMSSL - 國密SSL實驗室支持國密算法的網站 https://www.wotrus.com/ 流程操作 打開windows終端,使用命令ping沃通網站,找到這個網站的ip地址 ping www.wotrus.com打…

django框架學習文檔_Python四大主流網絡編程框架,你知道么?

高并發處理框架—— TornadoTornado 是使用 Python 編寫的一個強大的可擴展的 Web 服務器。它在處理高網絡流量時表現得足夠強健,卻在創建和編寫時有著足夠的輕量級,并能夠被用在大量的應用和工具中。Tornado 作為 FriendFeed 網站的基礎框架&#xff0c…

VS Studio報錯無法解析的外部符號 _imp_XXXXXXXXX

出現字符_imp,說明不是真正的靜態庫,而是某個動態庫的導入庫,導入函數和自己不同名,所以加了字符_imp。比如說_imp_GetUserNameA就是GetUserNameA函數。會報這種錯誤的原因: 1、說明注冊表函數沒有相關的lib庫&#xf…