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 相关文章推荐
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
Python中static相关知识小结
Jan 02 Python
Flask实现跨域请求的处理方法
Sep 27 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
python定时任务 sched模块用法实例
Nov 04 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
Python正则表达式高级使用方法汇总
Jun 18 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
python unittest单元测试的步骤分析
Aug 02 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时间类完整实例(非常实用)
2015/12/25 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python实现的归并排序算法示例
2017/11/21 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python time()的实例用法
2020/11/03 Python
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
资料员岗位职责
2013/11/17 职场文书
酒店副总岗位职责
2013/12/24 职场文书
会计主管岗位职责
2014/01/03 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
手术室护士个人总结
2015/02/13 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
单位工作证明范本
2015/06/15 职场文书
订货会主持词
2015/07/01 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers