python实现图片九宫格分割


Posted in Python onMarch 07, 2021

大家都知道在微信朋友圈或者微博以及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() # 执行主循环

打包好的exe程序下载地址:python实现图片九宫格分割

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python不规范的日期字符串处理类
Jun 10 Python
Python中的闭包详细介绍和实例
Nov 21 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
Python列表生成式与生成器操作示例
Aug 01 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
django最快程序开发流程详解
Jul 19 #Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 #Python
Django REST framework 视图和路由详解
Jul 19 #Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 #Python
Django模板Templates使用方法详解
Jul 19 #Python
python GUI图形化编程wxpython的使用
Jul 19 #Python
Django 外键的使用方法详解
Jul 19 #Python
You might like
用PHP读取IMAP邮件
2006/10/09 PHP
php 图片上添加透明度渐变的效果
2009/06/29 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
python实现查询IP地址所在地
2015/03/29 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
详解Python装饰器
2019/03/25 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
找到不普通的东西:Bonanza
2016/10/20 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
remote接口和home接口主要作用
2013/05/15 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
教育技术职业规划范文
2014/03/04 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
Python中time标准库的使用教程
2022/04/13 Python