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之关于循环的小伎俩
Oct 02 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
django admin后台添加导出excel功能示例代码
May 15 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
浅谈Python type的使用
Nov 19 Python
Python笔记之观察者模式
Nov 20 Python
python实现五子棋程序
Apr 24 Python
django中related_name的用法说明
May 20 Python
python中线程和进程有何区别
Jun 17 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
对象析构函数__del__在Python中何时使用
Mar 22 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简单封装了一些常用JS操作
2007/02/25 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
Jquery下的26个实用小技巧(jQuery tips, tricks & solutions)
2010/03/01 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
钳工实训报告总结
2014/11/04 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫