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下的XSLT API进行web开发的简单教程
Apr 15 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
python使用thrift教程的方法示例
Mar 21 Python
python 函数中的内置函数及用法详解
Jul 02 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
django Admin文档生成器使用详解
Jul 22 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python 实现控制鼠标键盘
Nov 27 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
PHP的加密方式及原理
2012/06/14 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
php加密解密实用类分享
2014/01/07 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
php实现网页端验证码功能
2017/07/11 PHP
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
python多任务及返回值的处理方法
2019/01/22 Python
详解python的argpare和click模块小结
2019/03/31 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python实现静态web服务器
2019/09/03 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
万能检讨书2000字
2014/10/17 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
工资证明格式模板
2015/06/12 职场文书
关于观后感的作文
2015/06/18 职场文书
外出听课学习心得体会
2016/01/15 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
golang中的struct操作
2021/11/11 Golang
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL