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中处理字符串之isdecimal()方法的使用
May 20 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
对Django url的几种使用方式详解
Aug 06 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
TensorFlow实现自定义Op方式
Feb 04 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
python实现无边框进度条的实例代码
Dec 30 Python
python 实现IP子网计算
Feb 18 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
基于jQuery试卷自动排版系统
2010/07/18 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python3处理文件中每个词的方法
2015/05/22 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
2014社区三八妇女节活动总结
2014/03/01 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
离婚协议书格式
2014/11/21 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
收入证明申请书
2015/06/12 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书